将向量作为函数参数传递

时间:2014-04-23 20:05:20

标签: c++ xcode function gcc vector

在VS 2013中,我可以做到

void myFunction(vector<int> myVector)
{
  // Do something with myVector
}

我可以使用以下功能:

void anotherFunction()
{
  myFunction({1, 25, 33, 45, 80});
}

但是,如果我使用Xcode 3.5(GCC 4.2)编译此代码,我会得到错误&#34; 在&#39; {&#39;之前的预期主要表达式令牌&#34;以及&#34; 没有匹配函数来调用anotherFunction(void)&#34;。

我是否有一个优雅的解决方法可以让GCC 4.2了解我将常量向量作为函数参数传递?

2 个答案:

答案 0 :(得分:5)

GCC中对initializer lists的支持从版本4.4开始,请参阅here。编译器根本不理解语法。

您需要使用C ++ 98方式设置向量,例如:

void anotherFunction()
{
  vector<int> myVector;
  const int values[] = {1, 25, 33, 45, 80};
  myVector.insert(myVector.begin(), values, values + sizeof(values)/sizeof(values[0]));
  myFunction(myVector);
}

我认为你可以比C ++ 98更好。

答案 1 :(得分:1)

我非常肯定GCC 4.2你必须事先声明这个矢量。另外,我会使用向量&lt; int&gt; const&amp;作为参数,以便它不复制矢量。