Подтвердить что ты не робот

Как я могу получить указатель на первый элемент в std::vector?

Я хочу записать данные из std::vector<char> в сокет, используя функцию write, которая имеет этот прототип:

ssize_t write(int, const void *, size_t);

Второй аргумент этой функции должен быть указателем на первый элемент в std::vector<char>. Как я могу получить указатель на этот элемент?

Я пробовал std::vector::front, но это возвращает ссылку, в то время как мне нужен указатель.

4b9b3361

Ответ 1

&mv_vec[0]

или

&my_vec.front()

Ответ 2

С++ 11 имеет vec.data(), который имеет преимущество, что вызов действителен, даже если вектор пуст.

Ответ 3

my_vec.empty() ? 0 : &my_vec.front()

Если вы хотите сбросить std::out_of_range, если вектор пуст, вы можете использовать

&my_vec.at(0)

Ответ 4

&*my_vec.begin()

или

&mv_vec[0]

Ответ 5

Принимая адрес первого элемента с &vec[0], как стандартный (поскольку, как я думаю, С++ 03) требует непрерывного хранения элементов std::vector.