У меня обугленного вектор собр и вектор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 (которая прокомментирована) заставляет код работать нормально. Что мне не хватает? Заранее спасибо и извините за потертое название вопроса :)
Try Добавить() в между 'arrnode.push_back (((arr [j] == '(')? ({1,1}): ({- 1, -1}))); ' Надеюсь, что эта помощь –
@SatishBejgum Нет, это не так. ошибка компилятора. –
Вместо этого вы можете использовать 'arr [j] == '(')? (node) {1,1}: (node) {- 1, -1}', но я не уверен он стандартный (напоминает мне к C99, а C99 - не C++ ...) –