代码之家  ›  专栏  ›  技术社区  ›  cdn

运算符[]不匹配(操作数类型为std::unique\u ptr和int)[重复]

  •  0
  • cdn  · 技术社区  · 6 年前

    我有一个 std::unique_ptr<std::vector<int>> 我正在尝试使用 [] 操作人员如何访问包含在 std::unique_ptr ?

    #include <memory>
    #include <vector>
    
    int main()
    {
        std::unique_ptr<std::vector<int>> x;
        x[0] = 1;
    }
    

    谢谢

    1 回复  |  直到 6 年前
        1
  •  6
  •   Cory Kramer    6 年前

    有一个指向向量的指针,所以必须取消对它的引用

    (*x)[0] = 1;
    

    x->at(0) = 1;
    

    然而,我很好奇,为什么需要动态分配 std::vector ? 该容器已经动态分配了底层数组,因此 x 成为一名 std::vector<int> 直接地

    如果你 保持一个指向向量的指针,至少确保在使用之前分配对象

    auto x = std::make_unique<std::vector<int>>();