c++ - 什么更有效率? vector.assign 与 vector.erase

标签 c++ algorithm vector stl time-complexity

当 vector 存在并试图删除该 vector 的背面时。
就时间复杂度而言,使用“vector.assign”是否有效?或者使用'vector.erase'是否有效?
请让我知道每种情况下的时间复杂度。
[例如]

vector<int> v = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10};

// 1. use assign
v.assign(v.begin(), v.begin() + 5);

// 2. use erase
v.erase(v.begin() + 5, v.end());

最佳答案

I would like to use vectors that consist only of elements from the beginning section of vectors to a certain index.


使用 resize 最有效,因为这就是该功能的用途。
对于它的值(value),自我- assign容器不允许更换。

关于c++ - 什么更有效率? vector.assign 与 vector.erase,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64841045/

相关文章:

c++ - 高级 iOS GUI(最好使用 C++)

c++ - Qt:调试和发布中 moc 输出的区别?

java - 如何从 Java 中的链表中删除特定值?

java - 合并 K 个排序数组

c++ - 初始化字符串 vector 数组时出错

c++ - 使用范围保护时如何避免警告?

c++ - 将内存分配给结构和指向结构的指针

java - 组织 K 内所有元素所需的最小交换

C++ - 从函数返回 vector

c++ - 二维 vector 未正确保存和加载 boost::serialize 库