Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ c+中的唯一/智能指针向量+;_C++_Pointers_Vector_Stack_Heap Memory - Fatal编程技术网

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

我正在练习使用智能指针(在c++中)。我真的被一个问题困住了:

我需要对这种表示进行编码,通常一个框表示智能指针,箭头指向堆变量。 在这个问题中,框是在一起的,因此它表示智能指针的向量。 我试过几种方法,但似乎都不管用。 以下是我迄今为止所做的尝试:

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>('*'));
    // . . .
}