Вы должны
#include <algorithm>
Это где std::find
жизнь. Кажется, что с MSVC вы получаете его через некоторые транзитивные включите в <iostream>
или <array>
.
Я также предлагаю квалифицировать имена стандартных компонентов библиотеки полностью, например std::array
и std::find
, а не using namespace std;
. См. here или here. Это дает понять, что вы пытаетесь использовать стандартную библиотеку find
, а не что-то другое.
Рекомендуется проверять, что ваш find
действительно что-то нашел, прежде чем пытаться его распечатать. Если вы попытались присвоить find
значение, которого нет, то его печать вызовет Undefined Behaviour, что является плохим.
auto it = std::find(a.cbegin(), a.cend(), 3);
if (a.cend() == it) {
std::cout << "Couldn't find value!\n";
return 1;
}
std::cout << *it << '\n';
return 0;
Я тоже не большой поклонник std::endl
. Знаете ли вы, что он пишет '\n'
и снимает поток? Многие люди не понимают, что это 2 вещи, что делает цель вашего кода намного менее ясной. Когда я прочитал его, я не знаю, действительно ли тот, кто его написал, действительно хотел сбросить поток, или просто не знал, что std::endl
делает это. Я предпочитаю просто использовать
std::cout << '\n';
, или, если вы действительно хотите, чтобы вручную очистить поток (маловероятно), то явно об этом:
std::cout << '\n' << std::flush;