将std :: vector作为const float*传递?

dar*_*aze 3 c++ arrays vector dynamic-arrays c++11

我的功能是:

void function(const float *, int sizeOfArray){...}
Run Code Online (Sandbox Code Playgroud)

我的载体是:

std::vector<float> myVector(size, val);
Run Code Online (Sandbox Code Playgroud)

我在文档中读到你可以使用myVector [0]作为标准的c ++静态数组操作.

如何将该向量传递给该函数而不必将值复制到新的动态数组?(我想避免为此使用new/delete).

这是......吗?

function(myVector[0], size);
Run Code Online (Sandbox Code Playgroud)

顺便说一句,我正在使用C++ 11.

son*_*yao 8

您可以使用std :: vector :: data(从C++ 11开始)获取指向底层数组的指针.

返回指向用作元素存储的基础数组的指针.指针是范围[data(); data()+ size())始终是有效范围,即使容器为空(在这种情况下data()不可解除引用).

例如

function(myVector.data(), myVector.size());
Run Code Online (Sandbox Code Playgroud)

这是......吗?

function(myVector[0], size);
Run Code Online (Sandbox Code Playgroud)

myVector[0]将返回元素(即float&),而不是地址(即float*).在C++ 11之前,你可以通过&myVector[0].