【问题标题】:How to resize a STL list pointer [closed]如何调整 STL 列表指针的大小
【发布时间】:2015-09-30 05:11:06
【问题描述】:

如果我将 STL 列表声明为

list<int> mylist;  

然后只需使用 mylist.resize() 即可轻松调整其大小
但问题是我已将列表指针声明为

list<int> *mylistptr=new list<int>[n];

现在我想更改 mylistpr 的大小。由于它是一个指针,因此编译器在使用 resize() 时会抛出错误。可以选择使用 malloc() 为 mylistptr 分配内存,然后使用 realloc() 调整它的大小。但是,如果我不想使用 malloc() 和 realloc() 怎么办。有没有其他办法???

谢谢

【问题讨论】:

  • list&lt;int&gt; *mylistptr=new list&lt;int&gt;[n]; 为什么有人会这样做?
  • 调整指针大小在 C++ 中没有任何意义,因为您无法调整指针大小。
  • @BaummitAugen ,实际上我想要一个列表,其中每个元素都将保存一个与其对应的列表。或一种二维列表。至于您的问题,为什么有人会这样做??........我将它用于图形的邻接表示。
  • @juanchopanza,当我们使用 malloc() 为一维或二维数组分配内存时,保存分配内存的变量看起来像指针,但我们可以将它用作数组并且也可以调整大小。正如我上面提到的,我正在尝试制作二维列表............
  • 这很好,但事实仍然是您无法调整指针的大小。你所描述的是让它指向不同的东西。

标签: c++ pointers stl


【解决方案1】:

可以通过以下方式简单地完成

std::vector<std::list<int>> myLists( n );

//...

myLists.resize( new_n );

【讨论】:

  • 谢谢 ......它成功了,我尝试了 std::vector<:vector>> mylist(n);它也有效
  • @Hari_IITR 完全没有。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-20
  • 1970-01-01
  • 2016-06-18
  • 2012-03-17
相关资源
最近更新 更多