将std :: list元素插入std :: list

时间:2010-02-18 05:04:56

标签: c++ stl

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

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

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

1 个答案:

答案 0 :(得分:3)

如果没有临时工作,你就无法做到,但你可以更简洁地做到这一点:

mylist.push_back(std::list<int>(1, 0)); // insert 1 element with value 0

正如JonM所说,临时可能会被任何体面的编译器优化掉。

您可以使用数组:

int vals[] = { 1, 2, 3, 4 };
mylist.push_back(std::list<int>(vals, vals+sizeof(vals)/sizeof(vals[0])));

Boost.Assign这样的工具可以轻松实现:

mylist.push_back(boost::assign::list_of(1)(2)(3));

性能方面取决于你想做什么 - 如果你是我希望这些列表可以被大量使用,使用(最好是智能的)指针来避免无休止的复制。