std::list <std::list <int>> mylist;
std::list <int> mylist_;
mylist_.push_back(0);
mylist.push_back(mylist_);
是否可以在不创建临时本地子列表(mylist_)的情况下将子列表插入列表(mylist)中,并且最好使用类型(子列表)作为性能方面的列表(mylist)中的指针?
答案 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));
性能方面取决于你想做什么 - 如果你是我希望这些列表可以被大量使用,使用(最好是智能的)指针来避免无休止的复制。