Вставка элемента std :: list в std :: list - PullRequest
0 голосов
/ 18 февраля 2010
    std::list <std::list <int>> mylist;
    std::list <int> mylist_;

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

возможно ли вставить подсписок в список (mylist) без создания локального подсписка временного (mylist_) и будет ли лучше использовать тип (подсписок) как указатель в списке (mylist) с точки зрения производительности?

1 Ответ

3 голосов
/ 18 февраля 2010

Вы не можете сделать это без временных, но вы можете сделать это более кратко:

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));

Производительность зависит от того, что вы хотите сделать, например, если вы хотите. ожидайте, что списки будут передаваться очень часто, используйте (желательно умные) указатели, чтобы избежать бесконечного копирования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...