Я не удивлюсь, если это дубликат, но я искал все вокруг и нашел только сообщения о поиске определенных элементов в векторах.
У меня есть код, который разбивает строку на вектор всех отдельных слов в строке (разделяется пробелами), а затем присваивает каждому индексу этого вектора отдельные строки (так что просто принимая предложение и разбивая его на слова), но я если я попытаюсь проиндексировать определенный элемент вектора, который не существует, я получаю всевозможные ошибки. Например, если у моего вектора есть 5 элементов, а позже я говорю:
string x = names[6];
то, поскольку нет имен [6], код прерывается. Я хочу добавить оператор "if", который по существу говорит "если имена [6] существуют, строка x = имена [6]", но я не знаю, как проверить, будут ли имена [6] (или любой другой индекс вектора ) существует.
Я пытался:
if (std::find(names.begin(), names.end(), names[4]) != names.end())
{
string x = names[4];
}
else
{
}
но я получаю те же ошибки, если имена [4] не существуют.
Если кто-то может угодить, дайте мне знать, как это сделать или обратитесь к другому сообщению, которое объясняет это, что было бы здорово,
-thanks
Индекс в std::vector
существует iff index < vector.size()
. Вы можете проверить это:
if (names.size() > 4)
string x = names[4];
Как поместить все записи вектора в строки, итерации их?
for (const auto& e : names) {
// You can use e here
}
Если вы действительно хотите проверить, существует ли индекс, с которым вы могли бы зарегистрироваться, выполните следующие действия:
try {
std::string x = names.at(position);
}
catch (const std::out_of_range& oor) {
//Nothing at this spot!
}
Вы также можете проверить с помощью vector.size()
.
std::vector
в этом случае. Поймай исключение -> без поломок.