Ответ 1
&mv_vec[0]
или
&my_vec.front()
Я хочу записать данные из std::vector<char>
в сокет, используя функцию write
, которая имеет этот прототип:
ssize_t write(int, const void *, size_t);
Второй аргумент этой функции должен быть указателем на первый элемент в std::vector<char>
. Как я могу получить указатель на этот элемент?
Я пробовал std::vector::front
, но это возвращает ссылку, в то время как мне нужен указатель.
&mv_vec[0]
или
&my_vec.front()
С++ 11 имеет vec.data()
, который имеет преимущество, что вызов действителен, даже если вектор пуст.
my_vec.empty() ? 0 : &my_vec.front()
Если вы хотите сбросить std::out_of_range
, если вектор пуст, вы можете использовать
&my_vec.at(0)
&*my_vec.begin()
или
&mv_vec[0]
Принимая адрес первого элемента с &vec[0]
, как стандартный (поскольку, как я думаю, С++ 03) требует непрерывного хранения элементов std::vector
.