C++ 如何在C++;?

C++ 如何在C++;?,c++,C++,我有以下向量: std::vector<std::pair<std::function<void(iter_type, iter_type)>, bool>> functionList; 这导致了一场车祸 如何安全地验证此索引中是否有对象,以便修改 表示运算符[]返回一个引用,但我试图检查它是否为null,但无法执行 另外,reference在reference操作符[](size\u type pos)中的含义是什么?当然与和不同,在调用[]之前,使用.a

我有以下向量:

std::vector<std::pair<std::function<void(iter_type, iter_type)>, bool>> functionList;
这导致了一场车祸

如何安全地验证此
索引中是否有对象,以便修改

表示
运算符[]
返回一个引用,但我试图检查它是否为null,但无法执行

另外,
reference
reference操作符[](size\u type pos)中的含义是什么?当然与

不同,在调用
[]
之前,使用
.at(index)
并捕获异常,或者检查
索引

<> > C++中的引用不是空的,它们是别名。指针可以是C++中的null,

使用<代码> .AT(index)并捕获异常,或者在调用<代码> []]/<代码> < /P>之前检查<代码>索引> VEC()/代码>。
<> > C++中的引用不是空的,它们是别名。在C++中指针可以为null。

< P>有三种方法来使用向量,而不冒来自越界访问的未定义行为的风险。按优先顺序,它们是:

  • 正确计算索引
  • 使用索引之前,请检查索引是否在边界内
  • 不要使用
    functionlist[index]
    而是使用
    functionlist.at(index)
    ,这将引发错误索引的异常

有三种方法可以使用向量,而不会因为越界访问而导致未定义的行为。按优先顺序,它们是:

  • 正确计算索引
  • 使用索引之前,请检查索引是否在边界内
  • 不要使用
    functionlist[index]
    而是使用
    functionlist.at(index)
    ,这将引发错误索引的异常

    • 另外:如果(functionList[index]!=null)返回类型中的
      reference
      &
      之间有什么区别?
      std::vector::reference
      只是
      T&
      typedef
      @AntoninGAVREL-Ahem,no.@GuerlandoOCs与
      运算符[]
      ?对这就是为什么您必须检查访问的索引是否小于容器的
      size()
      .at()
      在尝试访问不存在的对象时引发异常。另外:if(functionList[index]!=null)返回类型中的
      reference
      &
      之间有什么区别?
      std::vector::reference
      只是
      T&
      typedef
      @antonigavrel-Ahem,否。@GuerlandoOCs与
      运算符[]()
      ?对这就是为什么您必须检查访问的索引是否小于容器的
      size()
      .at()
      在尝试访问不存在的对象时引发异常。如何获取值
      索引
      ?您是否检查它是否介于
      0
      functionList.size()
      之间?您如何获取
      索引的值?您是否检查它是否介于
      0
      functionList.size()之间?
      
      functionList[index].second = enable;