c++ - 附加时是否保留 vector 元素的顺序?

标签 c++ vector

正如标题已经表明的那样,我想知道 vector 元素的内部顺序是否可以仅通过向 vector 附加元素来改变。

这里我指的是没有重新分配的订单更改的可能性,涉及两种不同的情况:

  1. 存储指向类的指针,例如:

    vector<A*> vec;    //for some class A;
    vec.push_back(new A());
    
  2. 存储类的元素,例如:

    vector<A> vec;    //for some class A;
    vec.push_back(A());
    

如果顺序可能会发生变化,是否有可能注意到发生了这种变化(例如设置了一些标志,...)?

是否也可以注意到 vector 是否被重新分配?

是否有其他容器(大小动态)可以明确保留任何元素(如列表)的内部顺序?

非常感谢!

最佳答案

Is order of vector elements preserved when appending?

是的。

Are there other containers (dynamic in size) which preserve definitely the internal order of any elements (like a list)?

全部sequence containers在 C++ 中保留内部顺序。所有其他的不一定(尤其是关联容器)。

关于c++ - 附加时是否保留 vector 元素的顺序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24404643/

相关文章:

c++ - 减少 Visual Studio 程序大小

c++ - C - 如何将文件的 gzip block 解压缩到内存缓冲区中

全国 iOS 离线 map (OSM)

c++ - 初始化 3d vector c++

java - 扫描器和 for 循环

c++ - Vulkan-hpp 正在将非标准布局类重新解释为另一个类。这是合法的吗?

c++ - 在 C++ 中拆分 ifstream

c++ - 结构对齐和类型重新解释

c++ - std::vector 是否适合频繁调整大小?

c++: 无法解决 vector 订阅错误