我理解clear()操作的复杂性在容器的大小上是线性的,因为必须调用析构函数.但原始类型(和POD)呢?似乎最好的做法是将矢量大小设置为0,这样复杂性就是不变的.
如果可以,std :: unordered_map也可以吗?
调用clear()向量将调用存储在向量中的任何内容的析构函数,这是一个线性时间操作.但是,当向量包含原始类型如int或double?
如果我有一个std::vector原始类型,并且我调用clear()(这种方式push_back从头开始capacity),clear()调用将在恒定时间或线性时间内完成吗?文档说它会破坏所有元素,但是如果元素是一个int,那么就不应该有任何东西需要破坏,对吧?
编辑:我发现了一个副本,其中有一张海报,详细解释了实现可以检查析构函数是否微不足道,并给出了一个具有该检查(GCC)的编译器的示例.