小编Igo*_*gor的帖子

从向量中删除比从列表中删除花费的时间更少.为什么?

在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)

c++ list vector

4
推荐指数
1
解决办法
207
查看次数

标签 统计

c++ ×1

list ×1

vector ×1