Почему моя программа при итерации с переменной типа size_t не работает (пишет "out of range"), а при типе int работает?
Вот мой код
#include <iostream>
#include <string>
int main() {
std::string word;
std::string palindrome;
std::getline(std::cin, word);
for (size_t i = word.size() - 1; i >= 0; i--) {
palindrome.push_back(word[i]);
}
for (size_t c = 0; c < word.size(); c++) {
if (word[c] == ' ') {
word.erase(c, 1);
c -= 1;
}
if (palindrome[c] == ' ') {
palindrome.erase(c, 1);
c -= 1;
}
}
if (word == palindrome) {
std::cout << "YES";
}
else {
std::cout << "NO";
}
return 0;
}
в таком виде компилятор выдает ошибку. Однако если я использую в первом цикле for переменную типа int, все работает корректно. Подскажите, в чем может быть проблема?
Ответы (1 шт):
Автор решения: NunOfIt
→ Ссылка
Проблема в том, что size_t может принимать только неотрицательные значения. Т.е. после нуля идёт не -1, а максимально возможное size_t (18446744073709551615). Проще не париться с size_t и использовать int.