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数组的替代品。