我将结构插入到向量中,但向量中所有元素的地址都是相同的
I insert struct to vector,but address of all the elements of vector are same
我声明了一个结构树节点
struct treenode {
int val;
treenode *l;
treenode *r;
};
和矢量
vector<int> v = { 1,2,3,4,5,6,7,8,9 };
现在我想创建一个矢量电视来存储v 的值
vector<treenode* > tv;
for (int i = 0; i < v.size(); i++)
{
treenode mid;
mid.val = v[i];
mid.l = NULL;
mid.r = NULL;
tv.push_back(&mid);
}
但是当我打印电视的值时,我发现电视的所有元素都是相同的(相同的地址),有9个。我很困惑,我每次迭代都要创建一个新的树节点,为什么所有元素都使用相同的地址在此处输入图像描述
您有一个悬挂指针的向量。只需按价值存储
vector<treenode> tv;
for (int i = 0; i < v.size(); i++)
{
treenode mid;
mid.val = v[i];
mid.l = NULL;
mid.r = NULL;
tv.push_back(mid);
}
否则,您会不断地将指针推回到迭代之间超出范围的临时变量mid
。
相关文章:
- 向量元素的引用地址与它所指向的向量元素的地址不同.为什么
- 在 C++ 中输出枚举类类型的向量元素
- 用向量的向量元素初始化向量的空向量
- 为什么不允许使用可变长度数组作为向量元素?
- 在函数中传递向量元素
- 使用 Rcpp 加速替换迭代算法中的列表和向量元素是否合法?
- 返回向量元素的 l 值的正确方法是什么?
- 当向量增长时,指向向量元素的C++指针是否无效
- 如何在C++中从一个向量元素减去std::unorderede_map向量元素并更新它
- C++:向量元素赋值导致访问冲突
- 将向量元素与字符串元素进行比较,而不初始化向量
- 从2D矢量中找出最小尺寸的向量元素的更好方法
- 当我尝试将一个向量元素的值分配给另一个向量元素时,为什么我的应用程序会崩溃
- 使用递归C++向量元素的总和
- 如何查找为数组中的最低值编制索引的向量元素
- 限制指针访问STL ::向量元素
- 访问索引指向向量元素时的seg故障 - 做错了什么
- 如何使用指针访问向量元素的各个元素
- 向量元素数据损坏了Find()操作
- 将字符值分配给向量元素.C