在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了解我将常量向量作为函数参数传递?
答案 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;作为参数,以便它不复制矢量。