Как инициализировать vector<char> строкой?

211
14 сентября 2017, 17:34

Есть ли возможность сделать инициализацию vector<char> из строки одной строкой кода?
Я делаю так:

vector<char> vec;
string str = "To travel you need a wish and your passport";
for (auto it : str)
{
    vec.push_back(it);
}

Но хотелось бы узнать более изящный способ.

Answer 1
string str = "To travel you need a wish and your passport";
vector<char> vec(str.begin(),str.end());

Годится?

Можно также

vector<char> vec(begin(str),end(str));

или, еще лучше,

vector<char> vec(cbegin(str),cend(str));

Эти варианты (begin/end и cbegin/cend, но не str.begin() и str.end()) сработают и для предложенного @Abyx

constexpr char str[] = "...";

но в этом случае нужно не забывать о том, что в str входит и завершающий нулевой символ, который тоже окажется в векторе.

READ ALSO
сколка времени надо на чтение числа scanf c++ [требует правки]

сколка времени надо на чтение числа scanf c++ [требует правки]

сколка времени надо на чтение числа scanf c++?

266
Зачем перегружать операции? с++

Зачем перегружать операции? с++

Доброго времени суток

244
Класс-итератор c++

Класс-итератор c++

Доброго времени суток! У меня есть класс для хранения двусвязного списка (аналог std::list), мне нужно написать класс-итератор перебирающий элементы...

303