在C++手册中我找到了下一个:
向量相对有效地从其末尾添加或移除元素.对于涉及在末尾以外的位置插入或删除元素的操作,它们的性能比其他位置差,并且与列表和forward_lists相比具有更少的一致的迭代器和引用.
此外,在矢量的'擦除'方法的'复杂性'我发现下一个:
删除的元素数量(destructions)加上最后一个元素删除(移动)后的元素数量.
在下一个列表的'擦除'方法的'复杂性'中:
线性的元素数量被删除(破坏).
但是当我在每个容器中的30百万个元素中测试它时(我从24357元素删除到2746591元素),我得到了从vector中删除花了5毫秒,但是从列表8857毫秒.差异巨大且令人困惑......
这是我的代码:
#include "stdafx.h"
#include <vector>
#include <list>
#include <iostream>
#include <ctime>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
const long int x = 30000000;
vector<char> v;
vector<char>::iterator itv1, itv2;
list<char> l;
list<char>::iterator itl1, itl2;
unsigned start, end;
long int first, last;
cout << "Please enter first position: \n";
cin >> first;
cout << "Please enter last position: \n";
cin >> last;
for (long int i = 0; i < x; ++i) …Run Code Online (Sandbox Code Playgroud)