| 函数 | 描述 |
| c.assign(beg,end) c.assign(n,elem) | 将[beg; end)区间中的数据赋值给c。 将n个elem的拷贝赋值给c。 |
| c.at(idx) | 传回索引idx所指的数据,如果idx越界,抛出out_of_range。 |
| c.back() | 传回最后一个数据,不检查这个数据是否存在。 |
| c.begin() | 传回迭代器重的可一个数据。 |
| c.clear() | 移除容器中所有数据。 |
| deque<Elem> c deque<Elem> c1(c2) Deque<Elem> c(n) Deque<Elem> c(n, elem) Deque<Elem> c(beg,end) c.~deque<Elem>() | 创建一个空的deque。 复制一个deque。 创建一个deque,含有n个数据,数据均已缺省构造产生。 创建一个含有n个elem拷贝的deque。 创建一个以[beg;end)区间的deque。 销毁所有数据,释放内存。 |
| c.empty() | 判断容器是否为空。 |
| c.end() | 指向迭代器中的最后一个数据地址。 |
| c.erase(pos) c.erase(beg,end) | 删除pos位置的数据,传回下一个数据的位置。 删除[beg,end)区间的数据,传回下一个数据的位置。 |
| c.front() | 传回地一个数据。 |
| get_allocator | 使用构造函数返回一个拷贝。 |
| c.insert(pos,elem) c.insert(pos,n,elem) c.insert(pos,beg,end) | 在pos位置插入一个elem拷贝,传回新数据位置。 在pos位置插入>n个elem数据。无返回值。 在pos位置插入在[beg,end)区间的数据。无返回值。 |
| c.max_size() | 返回容器中最大数据的数量。 |
| c.pop_back() | 删除最后一个数据。 |
| c.pop_front() | 删除头部数据。 |
| c.push_back(elem) | 在尾部加入一个数据。 |
| c.push_front(elem) | 在头部插入一个数据。 |
| c.rbegin() | 传回一个逆向队列的第一个数据。 |
| c.rend() | 传回一个逆向队列的最后一个数据的下一个位置。 |
| c.resize(num) | 重新指定队列的长度。 |
| c.size() | 返回容器中实际数据的个数。 |
| C1.swap(c2) Swap(c1,c2) | 将c1和c2元素互换。 同上操作。 |
| 函数 | 描述 |
| operator[] | 返回容器中指定位置的一个引用。 |
| #include <deque> #include <fstream> #include <string> #include <vector> static enum modes { FM_INVALID = 0, FM_VECTOR, FM_DEQUE }; class CVectorDequeTest { public: CVectorDequeTest(); void ReadTestFile(const char* szFile, int iMode) { char buff[0xFFFF] = {0}; std::ifstream inFile; inFile.open(szFile); while(!inFile.eof()) { inFile.getline(buff, sizeof(buff)); if(iMode == FM_VECTOR) m_vData.push_back(buff); else if(iMode == FM_DEQUE) m_dData.push_back(buff); } inFile.close(); } virtual ~CVectorDequeTest(); protected: std::vector<std::string> m_vData; std::deque<std::string> m_dData; }; |
| CPU | 1.8 GHz Pentium 4 |
| 内存 | 1.50 GB |
| 操作系统 | W2K-SP4 |
| 文件中的行数 | 9874 |
| 平均每行字母个数 | 1755.85 |
| 读文件的次数 | 45 |
| 总共插入的数据个数 | 444330 |
|
|
|
| PE文件格式详解(2) |
| 分形的乐趣之_Hilbert曲线 |
| C++数据结构学习:递归(2-1) |
| C++中建立对象间消息连接的系统方法 |
| C++下的引用类型 |
| C语言之可变参数问题 |
| 使用C++和XML建立智能文档(二) |
| 深入探讨C++中的引用 |
| C++中的函数重载 |
| C++数据结构学习:递归(3.1) |
| m_vData.reserve(1000000); |
| CPU | 1.8 GHz Pentium 4 |
| 内存 | 1.50 GB |
| 操作系统 | W2K-SP4 |
| 文件中的行数 | 9874 |
| 平均每行字母个数 | 1755.85 |
| 读文件的次数 | 70 |
| 总共插入的数据个数 | 691180 |
|
|
|
Vector | Deque | ||||||||||||||||||||
|
|
| for(xRun=0; xRun<NUMBER_OF_XRUNS; xRun++) { df = new CVectorDequeTest; elapsed_time = 0; for(i=0; i<NUMBER_OF_RUNS*xRun; i++) { cout << "Deque - Run " << i << " of " << NUMBER_OF_RUNS*xRun << "... "; df->ReadTestFile("F:\\huge.csv",DF_DEQUE); deque_data.push_back(datapoint()); deque_data.back().time_to_read = df->GetProcessTime(); elapsed_time += deque_data.back().time_to_read; deque_data.back().elapsed_time = elapsed_time; cout << deque_data.back().time_to_read << " seconds\n"; } vnElements.push_back(df->GetDequeSize()); cout << "\n\nDeleting... "; del_deque.Start(); delete df; del_deque.Stop(); cout << del_deque.GetDuration()/1000000.0 << " seconds.\n\n"; vTimeToDelete.push_back(del_deque.GetDuration()/1000000.0); } |
|
deque Results | |
Mean | 0.007089269 sec |
Maximum | 11.02838496 sec |
Minimum | -15.25901667 sec |
Std. Dev | 3.3803636 sec |
6-Sigma | 20.2821816 sec |
|
vector Results | |
Mean | -0.007122715sec |
Maximum | 0.283452127 sec |
Minimum | -0.26724459sec |
Std. Dev | 0.144572356sec |
6-Sigma | 0.867434136sec |
|
|
|
| ||||||||||||||||||||||
|
|