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

时间:2017-06-02 10:57:15

标签: c++ arrays c++11 vector dynamic-arrays

我的功能是:

void function(const float *, int sizeOfArray){...}

我的载体是:

std::vector<float> myVector(size, val);

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

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

是不是......?

function(myVector[0], size);

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

2 个答案:

答案 0 :(得分:8)

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

  

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

e.g。

function(myVector.data(), myVector.size());
  

是不是......?

function(myVector[0], size);

myVector[0]将返回元素(即float&),而不是地址(即float*)。在C ++ 11之前,您可以传递&myVector[0]

答案 1 :(得分:1)

function(myVector.data(), myVector.size());