Как правило, вы устанавливаете такое ограничение по двум причинам:
Рассмотрим следующий фрагмент кода:
int d, -d;
d = 3;
-d = 2;
d = -d;
Если -d
является юридическим идентификатором, то какое значение имеет значение d
в конце? -3 или 2? Это неоднозначно.
Также рассмотрим:
int 2e10f, f;
2e10f = 20;
f = 2e10f;
Какое значение имеет значение f
в конце? Это также неоднозначно.
Кроме того, это боль, чтобы читать в любом случае. Если кто-то объявляет 2ex10
, это опечатка для двух миллионов или имя переменной?
Убедитесь, что идентификаторы начинаются с букв, означает, что единственными языковыми элементами, с которыми они могут конфликтовать, являются зарезервированные ключевые слова.
int size = (*array).size();
Он не скажет вам размер array
, он скажет вам длину первой строки в этом массиве, вы должны передать длину массива функции отдельно. Функция должна выглядеть следующим образом:
bool in_array(string value, string *array, int length)
& nbsp;
Но лучшим выбором будет использование std::vector
и std::find
:
bool in_array(const std::string &value, const std::vector<string> &array)
{
return std::find(array.begin(), array.end(), value) != array.end();
}
, а затем вы можно использовать как:
int main() {
std::vector<std::string> tab {"sdasd", "sdsdasd"};
if (in_array(n, tab)) {
...
}
}