Каков самый простой способ получить массив char из вектора?
То, что я делаю, - это инициализация строки с использованием итераторов начала и конца вектора, а затем получение .c_str() из этой строки. Существуют ли другие эффективные методы?
Ответ 1
Это обсуждалось в "Эффективном 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)
будьте осторожны относительно удержания указателей на эти данные, поскольку указатель может быть недействительным, если вектор изменен.