массив - вывод vector c++




Получение массива из std: vector (2)

Каков самый простой способ получить массив символов из вектора?

Способ, которым я занимаюсь, - это инициализировать строку с использованием итераторов начала и конца вектора, а затем получить .c_str () из этой строки. Существуют ли другие эффективные методы?


Это обсуждалось в « Эффективном STL» Скотта Мейерса, которое вы можете сделать &vec[0] чтобы получить адрес первого элемента std::vector , и поскольку стандарт ограничивает векторы наличием непрерывной памяти, вы можете делать такие вещи, как это ,

// some function
void doSomething(char *cptr, int n)
{

}

// in your code
std::vector<char> chars;

if (!chars.empty())
{
    doSomething(&chars[0], chars.size());
}

редактировать: Из комментариев (спасибо casablanca)

  • будьте осторожны в отношении удержания указателей на эти данные, поскольку указатель может быть недействительным, если вектор изменен.

std::vector<char> chars;
char* char_arr = chars.data(); // &chars[0]




vector