追加时是否保留矢量元素的顺序?

a_g*_*est 4 c++ vector

正如标题已经表明的那样,我想知道向量元素的内部顺序是否只能通过将元素附加到向量来改变。

在这里我指的是这两个订单变化的可能性,并没有重新分配涉及两种不同的情况,:

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

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

    vector<A> vec;    //for some class A;
    vec.push_back(A());
    
    Run Code Online (Sandbox Code Playgroud)

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

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

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

提前谢谢了!

Kon*_*lph 6

追加时是否保留矢量元素的顺序?

是的。

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

C++ 中的所有序列容器都保留内部顺序。所有其他人都不一定(尤其是关联容器)。