cdn*_*cdn 0 c++ smart-pointers vector std
我有一个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;
}
Run Code Online (Sandbox Code Playgroud)
谢谢
你有一个指向向量的指针,所以你必须取消引用它
(*x)[0] = 1;
Run Code Online (Sandbox Code Playgroud)
或者
x->at(0) = 1;
Run Code Online (Sandbox Code Playgroud)
然而我很好奇,为什么你需要动态分配一个std::vector?该容器已经动态分配底层数组,所以我只需直接x分配std::vector<int>。
如果你确实保留了一个指向向量的指针,至少要确保在使用它之前分配该对象
auto x = std::make_unique<std::vector<int>>();
Run Code Online (Sandbox Code Playgroud)