【问题标题】:How to tell if a vector has a certain number of elements C++如何判断一个向量是否有一定数量的元素 C++
【发布时间】:2014-09-14 17:16:49
【问题描述】:

如果这是重复的,我不会感到惊讶,但我已经四处搜索,只找到有关在向量中查找特定元素的帖子。

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

如果有人可以让我知道如何执行此操作,或将我引用到另一篇解释这一点的帖子,那就太好了,

-谢谢

【问题讨论】:

  • 请注意,代码只会“中断”,因为您不处理 std::vector 在此实例中抛出的异常。捕获异常 -> 没有破损。

标签: c++ vector


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    如何通过迭代将向量的所有条目放入字符串中?

    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()联系。

    【讨论】:

      猜你喜欢
      • 2023-03-19
      • 2011-08-17
      • 2010-12-05
      • 2015-02-08
      • 1970-01-01
      • 2020-02-14
      • 2017-03-05
      • 2014-07-18
      • 1970-01-01
      相关资源
      最近更新 更多