如何判断向量是否具有一定数量的元素C ++

时间:2014-09-14 17:16:49

标签: c++ vector

如果这是重复的话我不会感到惊讶,但我已经四处搜索并且只发现了在向量中找到特定元素的帖子。

我有一个代码将字符串拆分为字符串中所有单个单词的向量(用空格分割),然后将该向量的每个索引分配给单个字符串(这样只需要一个句子并将其拆分为单词)但我发现如果我尝试索引不存在的向量的某个元素,我会得到各种各样的错误。例如,如果我的向量有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

2 个答案:

答案 0 :(得分:3)

if std::vector存在index < vector.size()中的索引。你可以测试一下:

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

答案 1 :(得分: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()