Как определить, имеет ли вектор определенное количество элементов C ++

0

Я не удивлюсь, если это дубликат, но я искал все вокруг и нашел только сообщения о поиске определенных элементов в векторах.

У меня есть код, который разбивает строку на вектор всех отдельных слов в строке (разделяется пробелами), а затем присваивает каждому индексу этого вектора отдельные строки (так что просто принимая предложение и разбивая его на слова), но я если я попытаюсь проиндексировать определенный элемент вектора, который не существует, я получаю всевозможные ошибки. Например, если у моего вектора есть 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

  • 0
    Обратите внимание, что код только «ломается», потому что вы не обрабатываете исключение, которое выбрасывает std::vector в этом случае. Поймай исключение -> без поломок.
Теги:
vector

2 ответа

3
Лучший ответ

Индекс в std::vector существует iff index < vector.size(). Вы можете проверить это:

if (names.size() > 4)
    string x = names[4];
1

Как поместить все записи вектора в строки, итерации их?

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().

Ещё вопросы

Сообщество Overcoder
Наверх
Меню