Можно ли создать std :: list в одну строку, указав его значения (c ++)?

Я хочу создать std::list указав его значения, и я хотел бы сделать это в одну строку, например:

std::list<std::string> myList("Cat", "Dog", "Pig"); // doesn't compile

Я не мог найти способ сделать это просто с std::list (Я не удовлетворен c ++ справочные примеры), я что-то пропустил? Если это невозможно со стандартными списками, есть ли причина? И какой самый простой способ это сделать?

Заранее спасибо.

2

Решение

В C ++ 11 вы можете использовать инициализатор:

std::list<std::string> t { "cat", "dog" };

В С ++ 03 boost::assign::list_of доступен:

#include <boost/assign/list_of.hpp>

std::list<std::string> t = boost::assign::list_of("cat")("dog");
6

Другие решения

использование Boost.Assign.

#include <boost/assign/list_of.hpp>
std::list<std::string> test = boost::assign::list_of("abc")("def");

В использовать инициализатор

std::list<std::string> test { "abc", "def" };
6

в с ++ 11 можно написать

std::list<std::string> foo = { "bar", "meh", "bah" };

для этого вам понадобится обновленный компилятор. (т.е. GCC 4,8)

Иначе нет возможности в с ++.

2

std::list<std::string> myList { "Cat", "Dog", "Pig"};

Только C ++ 11. Для более старого C ++ обратитесь к Boost.Assign.

using boost::asign::list_of;

std::list<std::string> myList = list_of("Cat")("Dog")("Pig");
1

В C ++ 11 вы можете сделать это, используя равномерная инициализация:

std::list<std::string> myList{"Cat", "Dog", "Pig"};
0
По вопросам рекламы [email protected]