怎么获取vecotr的元素区首地址

如何获取vecotr的元素区首地址?


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的第一个元素,直接取出来就行了,有必要那么纠结?
------解决方案--------------------
引用:
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;
}


引用:
真麻烦,后面直接用一个数组来解决了。 想那么多方法结果还是回归C的方法来做简单。


引用:直接取第0个元素的地址,比如&amp;amp;buf[0]

这个不管我试过了。程序崩溃了。