Ответ: вы не можете.
std::vector
имеет динамический размер c, то есть его размер может изменяться во время выполнения (т. Е. На l oop от ввода пользователя). В C ++ недопустимо создавать «массив» некомпилируемого постоянного размера. Вы можете однако создать динамически распределенный массив с new
(например, auto my_array = new char[vector.size()]
). Однако вы на самом деле не должны этого делать, особенно без каких-либо проверок разумности размера вектора.
Альтернативой может быть непосредственное использование std::vector
. Если вам нужно работать с более старым (или C) API, который требует указатель на начало вашего «массива» в качестве аргумента, вы можете использовать vector::<T>::data
, который будет возвращать &vector[0]
.
если у меня есть этот код:
void my_old_api_function(char* c) {
...
}
Я могу сделать это:
std::vector<char> my_data;
my_data.emplace_back('c');
...
my_old_api_function(my_data.data()); // Pass a pointer to the first element