我有一個炭載體ARR和矢量arrnode有其元素作爲節點。以下是代碼:編譯器不接受三元操作者的使用
struct node
{
int min;
int sum;
};
vector<char> arr;
char c;
for(int j = 0; j < n; j++)
{
cin >> c;
arr.push_back(c);
}
vector<node> arrnode;
for(int j = 0; j < n; j++)
{
/* if(arr[j]=='(')
arrnode.push_back({1,1});
else
arrnode.push_back({-1,-1});*/
arrnode.push_back(((arr[j]=='(') ? {1,1} : {-1,-1}));
}
此代碼爲使用三元運算符的行提供以下錯誤。
prog.cpp:68:49: error: expected ‘:’ before ‘{’ token
prog.cpp:68:49: error: expected primary-expression before ‘{’ token
但是,if-else部分(這是註釋)使代碼工作正常。我錯過了什麼? 提前感謝和問題:)
嘗試添加()在 之間'arrnode.push_back (((arr [j] =='(')?({1,1}):({ - 1,-1})));' 希望得到這個幫助 –
@SatishBejgum不,不。編譯器錯誤 – 2013-07-22 11:39:46
你可以做的是'arr [j] =='(')?(node){1,1}:(node){ - 1,-1}',但我不確定它是標準的(提醒我到C99複合文字,而C99不是C++ ...) – 2013-07-22 11:40:45