开发者

How can I get a pointer to the first element in an std::vector?

开发者 https://www.devze.com 2023-04-03 21:13 出处:网络
I want to write data from an std::v开发者_如何学编程ector<char> to a socket, using the write function, which has this prototype:

I want to write data from an std::v开发者_如何学编程ector<char> to a socket, using the write function, which has this prototype:

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

The second argument to this function must be a pointer to the first element in the std::vector<char>. How can I get a pointer to this element?

I tried std::vector::front but this returns a reference, while I need a pointer.


C++11 has vec.data() which has the benefit that the call is valid even if the vector is empty.


&mv_vec[0]

or

&my_vec.front()


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

If you would like an std::out_of_range to be thrown if vector is empty, you could use

&my_vec.at(0)


&*my_vec.begin()

or

&mv_vec[0]


By taking the address of the first element, with &vec[0], as the standard (since C++03, I think) demands continous storage of std::vector elements.

0

精彩评论

暂无评论...
验证码 换一张
取 消