【发布时间】:2021-03-11 05:57:19
【问题描述】:
所以我有以下
vector<vector< tuple<string, double>*>*>* graph;
一个二维向量,带有一个字符串和双精度元组。 我想用一定的大小初始化图(2d向量)和 一个新的向量*>,在大(外)向量的每个元素中
我使用了以下行
graph = new vector<vector<tuple<string, double>*>*>(67, new vector< tuple<string,double>*>());
这个东西有效,但是当我试图释放它时,我发现我创建的所有新向量都是 相同的向量。 意思是,所有元素都指向同一个向量。我明白为什么会这样,但是 有没有一种方法可以初始化所有向量而无需执行 for 循环,即
for(int i....)
graph->push_back(new vector< tuple<string,double>*>);
【问题讨论】:
-
处理指针的原因是什么?
-
是的,这里的指针一定会让您立即后悔。特别不适合单个
double。 -
new的那个参数被评估一次,所以是的,你会得到 N 个相同对象的副本。这是因为指针被复制了。如果您使用的是相同的非指针版本,它可以将它们复制到不同的实例。 -
嗨,我使用所有这些指针是因为我倾向于在堆上分配所有内容。我不知道我需要多少个向量,可能是数百个。所以我分配一切
标签: c++ vector initialization