c – 我可以使用std :: vector调用带有数组/指针参数的函数吗?

我想重写一些使用大量unsigned char数组的代码,而不是使用std :: vector< unsigned char>对象.我遇到的问题是,这些数据当前用于存储将写入串行端口或套接字写入缓冲区的数据,而执行此操作的库函数则采用void *或unsigned char *.这种功能的一个例子是

  WriteToSocketBuffer(unsigned char* pBuffer, int iSize);

所以目前我有表格的代码

 unsigned char* pArray = new unsigned char[iSize];
 //   populate array with data
 WriteToSocketBuffer(pArray,iSize);
 delete [] pArray;

我的问题如下:如果我改变我的类有一个std :: vector< unsigned char>而不是原始数组我可以简单地调用我的库函数

  std::vector<unsigned char> myVector;
  WriteToSocketBuffer(&myVector[0],myVector.size());

传递向量中第一个元素的地址是否与传入原始数组中第一个元素的地址相同.这很简单吗?

最佳答案
是的,向量的元素保证与数组类似.

参考:

C 03标准:[lib.vector] 23.2.4类模板向量

……
The elements of a vector are stored contiguously, meaning that if v is a vector<T, Allocator> where T is some type other than bool, then it obeys the identity &v[n] == &v[0] + n for all 0 <= n < v.size()

转载注明原文:c – 我可以使用std :: vector调用带有数组/指针参数的函数吗? - 代码日志