Мне нужно проверить, существует ли элемент с определенным значением в векторе c ++, прежде чем добавлять новый (чтобы избежать дублирования).
Я проверил все, и это решение (упрощенный код ниже) кажется наиболее эффективным, если бы оно работало.
У меня проблема именно с этой строкой:
"if (std :: find (позиции.begin (), позиции.end (), pos)! = Позиции.end ())",
, который дает мне ошибки компиляции внутри библиотеки, говоря: «Недопустимые операнды для двоичного выражения ('position' и 'const position')".
Я знаю, что я новичок в c ++, и мне жаль, если это глупый вопрос, но кто-нибудь может сказать мне, что я делаю неправильно?
Это факт, что значение является структурой? Это как-то связано со значениями по сравнению с указателями / ссылками (я подозреваю, что это так)?
struct position
{
int column;
int row;
};
int main ()
{
std::vector<position> positions = {{0,0}, {0,1}, {0,2}, {1,0}, {1,1}, {1,2}};
position pos = {2,1};
if(std::find(positions.begin(), positions.end(), pos) != positions.end())
{
positions.push_back(pos);
}
else
{
std::cout << "Value is already present" << std::endl;
}
return 0;
}
Я ничего не понимаю и действительно застрял с этим, что мешает мне продвигаться в моем проекте.
Кто-нибудь имеет представление о том, что я делаю неправильно или как мне это сделать?
Большое спасибо!