我想使用std::vector<char>
函数将数据从write
写入套接字,该函数具有以下原型:
ssize_t write(int, const void *, size_t);
此函数的第二个参数必须是指向std::vector<char>
中第一个元素的指针。如何获得指向此元素的指针?
我尝试了std::vector::front
但这会返回一个引用,而我需要一个指针。
答案 0 :(得分:51)
C ++ 11具有vec.data()
,即使向量为空,也可以使调用有效。
答案 1 :(得分:32)
&mv_vec[0]
或
&my_vec.front()
答案 2 :(得分:5)
my_vec.empty() ? 0 : &my_vec.front()
如果你想要一个std::out_of_range
,如果vector为空,你可以使用
&my_vec.at(0)
答案 3 :(得分:2)
&*my_vec.begin()
或
&mv_vec[0]
答案 4 :(得分:1)
通过将第一个元素的地址(&vec[0]
)作为标准(因为C ++ 03,我认为)要求连续存储std::vector
个元素。