总结:
list的size()接口:O(N)
vector的size()接口:O(1)
其余STL容器可按下面方法自测。
求时间复杂度方法:
#include<iostream>
#include<list>
#include<ctime>
#include<vector>
using namespace std;
int main(){
time_t start, finish;
int num = 0;
vector<int> coll;
start = clock();
for(int i=0;i<10000;++i){
coll.push_back(i);
num += coll.size();
}
finish = clock();
cout<<finish - start<<" num:"<<num<<endl;
coll.clear();
start = clock();
for(int i=0;i<10000;++i)
coll.push_back(i);
finish = clock();
cout<<finish - start<<endl;
return 0;
}
对结果分析:
发现添加size之后基本对时间没什么影响,所以vector的时间复杂度是O(1)的。
把vector换成list会发现时间复杂高了很多倍,所以list的时间复杂度是O(N)的。