C++ 将std::list元素插入std::list std::list mylist; std::列出我的列表; 我的列表。向后推(0); mylist.向后推(mylist);

C++ 将std::list元素插入std::list std::list mylist; std::列出我的列表; 我的列表。向后推(0); mylist.向后推(mylist);,c++,stl,C++,Stl,是否可以在不创建临时本地子列表(mylist)的情况下将子列表插入列表(mylist)中,并且在性能方面使用类型(子列表)作为列表(mylist)中的指针会更好?如果没有临时表,您无法真正做到这一点,但您可以更简洁地做到: std::list <std::list <int>> mylist; std::list <int> mylist_; mylist_.push_back(0); mylist.push_back(myl

是否可以在不创建临时本地子列表(mylist)的情况下将子列表插入列表(mylist)中,并且在性能方面使用类型(子列表)作为列表(mylist)中的指针会更好?

如果没有临时表,您无法真正做到这一点,但您可以更简洁地做到:

    std::list <std::list <int>> mylist;
    std::list <int> mylist_;

    mylist_.push_back(0);
    mylist.push_back(mylist_);

性能方面,这取决于您想做什么-例如,如果您希望列表经常被传递,请使用(最好是智能的)指针以避免无休止的复制。

没有临时表,您无法真正做到这一点,但您可以更简洁地做到:

    std::list <std::list <int>> mylist;
    std::list <int> mylist_;

    mylist_.push_back(0);
    mylist.push_back(mylist_);

就性能而言,这取决于您想做什么-如果您希望列表经常被分发,请使用(最好是智能的)避免无休止复制的指针。

最好注意性能方面,您的第一个方法可能会导致编译器优化任何临时列表的创建。最好注意性能方面,您的第一个方法可能会导致编译器优化任何临时列表的创建。
int vals[] = { 1, 2, 3, 4 };
mylist.push_back(std::list<int>(vals, vals+sizeof(vals)/sizeof(vals[0])));
mylist.push_back(boost::assign::list_of(1)(2)(3));