怎么获取vecotr的元素区首地址
如何获取vecotr的元素区首地址?
vecotr使用起来非常方便,但是现在遇到一个问题是.
需要直接操作其元素区的首地址进行IO操作,避免多余的内存拷贝.
例如:
fwrite(buf,size,fd);
希望这个buf直接就是vector数据的首地址. 避免去内存拷贝.
但是看了半天一直也没有找到方法.
还请各位仁兄指点.
------解决方案--------------------
看看MSDN上的这个关于vector::data方法的例子
------解决方案--------------------
迭代器不行吗
------解决方案--------------------
vector a;
a[0]不就是么..费那么大得劲 你想干什么
------解决方案--------------------
1.如果需要传递vector,一般都使用引用,避免复制;
2.如果需要操作vector,一般都使用迭代器;
3.如果你需要操作vector的第一个元素,直接取出来就行了,有必要那么纠结?
------解决方案--------------------
对于前两条,顶了吧.....
------解决方案--------------------
基本类型是可以这样用的,是你写得有问题吧,试试下面的程序:
vecotr使用起来非常方便,但是现在遇到一个问题是.
需要直接操作其元素区的首地址进行IO操作,避免多余的内存拷贝.
例如:
fwrite(buf,size,fd);
希望这个buf直接就是vector数据的首地址. 避免去内存拷贝.
但是看了半天一直也没有找到方法.
还请各位仁兄指点.
------解决方案--------------------
看看MSDN上的这个关于vector::data方法的例子
#include <vector>
#include <iostream>
int main()
{
using namespace std;
vector<int> c1;
vector<int>::pointer c1_Ptr;
vector<int>::const_pointer c1_cPtr;
c1.push_back(1);
c1.push_back(2);
cout << "The vector c1 contains elements:";
c1_cPtr = c1.data();
for (size_t n = c1.size(); 0 < n; --n, c1_cPtr++)
{
cout << " " << *c1_cPtr;
}
cout << endl;
cout << "The vector c1 now contains elements:";
c1_Ptr = c1.data();
*c1_Ptr = 20;
for (size_t n = c1.size(); 0 < n; --n, c1_Ptr++)
{
cout << " " << *c1_Ptr;
}
cout << endl;
}
------解决方案--------------------
迭代器不行吗
------解决方案--------------------
vector a;
a[0]不就是么..费那么大得劲 你想干什么
------解决方案--------------------
1.如果需要传递vector,一般都使用引用,避免复制;
2.如果需要操作vector,一般都使用迭代器;
3.如果你需要操作vector的第一个元素,直接取出来就行了,有必要那么纠结?
------解决方案--------------------
对于前两条,顶了吧.....
------解决方案--------------------
基本类型是可以这样用的,是你写得有问题吧,试试下面的程序:
#include <cstring>
#include <iostream>
#include <vector>
using namespace std;
#define COUNT (10)
int main(void)
{
vector<int> v;
int a[COUNT];
for(int i = 0; i < COUNT; i++)
v.push_back(i);
memcpy(a, &v[0], COUNT * sizeof(int));
for(int i = 0; i < COUNT; i++)
cout << a[i] << ' ';
cout << endl;
return 0;
}