C++ c+中的唯一/智能指针向量+;
我正在练习使用智能指针(在c++中)。我真的被一个问题困住了: 我需要对这种表示进行编码,通常一个框表示智能指针,箭头指向堆变量。 在这个问题中,框是在一起的,因此它表示智能指针的向量。 我试过几种方法,但似乎都不管用。 以下是我迄今为止所做的尝试:C++ c+中的唯一/智能指针向量+;,c++,pointers,vector,stack,heap-memory,C++,Pointers,Vector,Stack,Heap Memory,我正在练习使用智能指针(在c++中)。我真的被一个问题困住了: 我需要对这种表示进行编码,通常一个框表示智能指针,箭头指向堆变量。 在这个问题中,框是在一起的,因此它表示智能指针的向量。 我试过几种方法,但似乎都不管用。 以下是我迄今为止所做的尝试: unique_ptr<vector<unique_ptr<char>>> ptr_vec; ptr_vec -> push_back(make_unique<char>('w')); uniq
unique_ptr<vector<unique_ptr<char>>> ptr_vec;
ptr_vec -> push_back(make_unique<char>('w'));
unique_ptr ptr_vec;
ptr_vec->push_back(使_唯一('w'));
如果我运行它,只需说我的程序停止工作如果我进行调试,我会得到以下结果(它打开vector.tcc文件并向我显示):
但是我无法将地址分配给unique_ptr一个
unique_ptr
的实例最初没有值;首先需要对其进行初始化:
unique_ptr<vector<unique_ptr<char>>> ptr_vec;
ptr_vec = make_unique<vector<unique_ptr<char>>>();
请显示您尝试的代码和错误。您有一个指向向量的指针。创建向量并使指针指向向量的部分在哪里?你知道指针指向其他东西吗?在你使用它之前,你必须实际创建它。你有一个指向(唯一)指针向量的(唯一)指针。这在实践中没有多大意义。为什么不只是指针向量呢?根据图表,你根本不需要向量,因为它的元素存储在堆上。如果您想将它们存储在堆栈上,a
std::array
似乎更适合您谢谢我现在明白了!!我会拿出我的第一张独一无二的照片!
#include <memory>
#include <vector>
int main() {
std::vector<std::unique_ptr<char>> vec;
vec.push_back(std::make_unique<char>('w'));
vec.push_back(std::make_unique<char>('-'));
vec.push_back(std::unique_ptr<char>());
vec.push_back(std::make_unique<char>('*'));
// . . .
}