gpt4 book ai didi

c++ - 设置 vector of int 指针,指向 int vector 的元素

转载 作者:太空狗 更新时间:2023-10-29 23:49:34 28 4
gpt4 key购买 nike

我尝试将指向 int 的指针 vector 设置为另一个 vector 的元素

vector<int> vecInt;
vector<int*> vecPInt;
int main()
{
vecInt.push_back(1);
vecPInt.push_back(&vecInt[0]);
vecInt.push_back(1);
vecPInt.push_back(&vecInt[1]);
for(auto v:vecInt)
{
cout<<v<<"\n";
}
for(auto v:vecPInt)
{
cout<<*v<<"\n";
}

但是结果是

1

1

11717664

1

还有另一种方法可以做到这一点。但为什么在这种情况下会出现这种行为?

最佳答案

第二次将元素推回 vector vecInt 时, vector 的容量发生变化。分配了两倍大小的新区域,因此旧指针开始指向其他内容。基本上,只要 vector 的大小达到其容量,就必须重新分配 vector 并且它会使所有指向序列中元素的指针无效。
看看When does a std::vector reallocate its memory array?

关于c++ - 设置 vector of int 指针,指向 int vector 的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39591456/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com