C++ 如何提供重载来获取向量参数?

C++ 如何提供重载来获取向量参数?,c++,vector,C++,Vector,如何提供重载来获取向量参数 void res(uint8_t* buffer, int len) { std::vector<uint8_t> buf( buffer, buffer + len ); // here i want to pass buf as uint8_t* to onther func pack((uint8_t*)buf, len));// error } IntelliSense: no suitable conversion function fro

如何提供重载来获取向量参数

void res(uint8_t* buffer, int len)
{
std::vector<uint8_t> buf( buffer, buffer + len ); 
// here i want to pass buf as uint8_t* to onther func
pack((uint8_t*)buf, len));// error 
}

IntelliSense: no suitable conversion function from "std::vector<uint8_t, std::allocator<uint8_t>>" to "uint8_t *" 
void res(uint8\u t*buffer,int len)
{
std::向量buf(缓冲区,缓冲区+len);
//这里我想把buf作为uint8\u t*传递给另一个func
pack((uint8_t*)buf,len));//错误
}
IntelliSense:没有从“std::vector”到“uint8\u t*的合适转换函数

传递第一个元素的地址

pack(&buf[0], len);

传递第一个元素的地址

pack(&buf[0], len);

重载是以何种方式涉及的??重载是以何种方式涉及的??在执行此操作时,请记住,可以重新分配向量,并且在您第二次访问指针时,第一个元素可能不位于同一地址。以及编译器错误的原因:向量本身(或指向它的指针)不是指向此向量所持有数据的指针。
buf
的类型是
std::vector
而不是
uint8\u t*
@MixedCoder:这是由标准保证的。向量将其数据保存在一个连续的内存块中,指向第一个元素的指针是指向这个块的指针。@ PHLISY——但它只对存储向量元素的连续实现正确的工作。@ MyDeDe编码器:据我所知(我不能引用当前C++标准中的任何位置),它是有保证的。否则你的标准库就不是标准库了。。。除此之外,这就是关于向量的全部内容。它们被认为是类C数组的替代。在执行此操作时,请记住向量可以重新分配,并且在第二次访问指针时,第一个元素可能不在同一地址。编译器错误的原因是:向量本身(也不是指向它的指针)不是指向此向量所持有数据的指针。
buf
的类型是
std::vector
而不是
uint8\u t*
@MixedCoder:这是由标准保证的。向量将其数据保存在一个连续的内存块中,指向第一个元素的指针是指向这个块的指针。@ PHLISY——但它只对存储向量元素的连续实现正确的工作。@ MyDeDe编码器:据我所知(我不能引用当前C++标准中的任何位置),它是有保证的。否则你的标准库就不是标准库了。。。除此之外,这就是关于向量的全部内容。它们被认为是类C数组的替代品。