Я знаю, что об этом спрашивали в другом месте, но я не могу найти его из-за двусмысленности между оператором и '&' и фактическим словом в С++. Я изучаю C++ и наткнулся на вспомогательную функцию в hackerrank, в которой была строка, которая меня смутила.
return x == y and x == ' '
Я не уверен, что делает "и". Поиск в Google возвращает только ссылки на оператор «&».
Вся функция ниже; "и" находится в строке 3:
vector<string> split_string(string input_string) {
string::iterator new_end = unique(input_string.begin(), input_string.end(), [] (const char &x, const char &y) {
return x == y and x == ' ';
});
input_string.erase(new_end, input_string.end());
while (input_string[input_string.length() - 1] == ' ') {
input_string.pop_back();
}
vector<string> splits;
char delimiter = ' ';
size_t i = 0;
size_t pos = input_string.find(delimiter);
while (pos != string::npos) {
splits.push_back(input_string.substr(i, pos - i));
i = pos + 1;
pos = input_string.find(delimiter, i);
}
splits.push_back(input_string.substr(i, min(pos, input_string.length()) - i + 1));
return splits;
}





Эти ключевые слова использовались, когда разработчики использовали клавиатуры, которые не поддерживали такие символы, как && или ||. Использование ключевого слова вместо этих операторов решит эту проблему.
В этом случае and равносильно написанию &&.
Вот полный список ключевых слов:
and &&
and_eq &=
bitand &
bitor |
compl ~
not !
not_eq !=
or ||
or_eq |=
xor ^
xor_eq ^=
Ссылка: https://en.wikipedia.org/wiki/C_alternative_tokens
and — это (не очень известный) альтернативный оператор C++ и синоним &&. Он существует, потому что код C/C++ может быть записан в файле с кодировкой/набором символов, отличным от ASCII-7. Поэтому C/C++ поддерживает альтернативные команды для таких операторов, как &, ~ и т. д.
См.: https://en.cppreference.com/w/cpp/language/operator_alternative
Обновлено: проблема с кодировкой
Кажется, это ключевые слова в C++, а не макросы. en.cppreference.com/w/cpp/keyword/и