browser icon
You are using an insecure version of your web browser. Please update your browser!
Using an outdated browser makes your computer unsafe. For a safer, faster, more enjoyable user experience, please update your browser today or try a newer browser.

初识STL

Posted by on 2004 年 04 月 13 日

你可以任意转载本文,但请在转载后的文章中注明作者和原始链接。
媒体约稿请联系 titilima_AT_163.com(把“_AT_”换成“@”)。

初次面对STL的经历,就是在玩vector和list。

vector在内存中的映像就是一段连续的内存(数组)。使用vector的时候需要为其指定一个初始大小,当添加的元素超过这个大小的时候需要使用push_back,否则会发生错误。

C++代码
  1. vector<int> n(3);   
  2. for (int i = 0; i < 3; i++)   
  3.   n[i] = i;   
  4. n.push_back(4);   
  5. // n.size() == 4   
  6. for (int i = 0; i < 4; i++)   
  7.   cout << n[i];  

list则如其字面含义一样,是一个链表结构。对于list容器则不能使用operator[],需要使用迭代器。

C++代码
  1. list<int> n;   
  2. for (int i = 0; i < 4; i++)   
  3.   n.push_back(i);   
  4. // n.size() == 4   
  5. for (list<int>::iterator p = n.begin(); p != n.end(); p++)   
  6.   cout << *p;  

vector和list的容器结构性质就决定了它们的效率差异。在使用push_back的时候,vector的复杂度是线性增长的,list则是1;在获取容器元素的时候,vector的复杂度是1,但list由于涉及到了用迭代器遍历,这使得它的复杂度为线性增长。

订阅本站

没有评论

(Required)
(Required, will not be published)