S.l.e!ep.¢%

像打了激速一样,以四倍的速度运转,开心的工作
简单、开放、平等的公司文化;尊重个性、自由与个人价值;
posts - 1098, comments - 335, trackbacks - 0, articles - 1
  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

set、vector、list和deque 顺序容器

Posted on 2008-10-15 22:30 S.l.e!ep.¢% 阅读(4282) 评论(2)  编辑 收藏 引用 所属分类: STL

#include <iostream>
#include <set>
#include <vector>
#include <list>

int main()
{
 // vector
 std::vector<int> myvector;

 // 一个 vector 就像一个动态的一维数组
 // 声明一个存放 100 个 0 的整数的 vector
 std::vector<int> myvec(100, 0);
 
 // 返回 vector 的大小, 即元素的个数
 std::cout << myvec.size() << std::endl;
 
 // 删除 vector 末尾的元素, vector 的大小相应减1
 myvec.pop_back();

 // 在 vector 的末尾添加元素
 myvec.push_back(10);

 // 返回 vector 末尾的元素
 std::cout << myvec.back() << std::endl;

 // 清除 vector 所有元素, vector 的个数为 0
 myvec.clear();
 std::cout << myvec.size() << std::endl;
 
 // 访问方式
 // std::cout << myvec[1] << std::endl;    //这种方法访问越界会异常
 // std::cout << myvec.at(5) << std::endl; //这种方法访问越界会异常

 // 遍历

 // 遍历方法1, 推荐
 for(std::vector<int>::iterator iter_1 = myvec.begin(); iter_1 != myvec.end(); iter_1++)
  std::cout << (int)*iter_1 << std::endl;

 // 遍历方法2, 不推荐, 原因忘记
 for(int i = 0; i <= myvec.size(); i++)
  std::cout << myvec[i] << std::endl;

 

 // set
 // set 是集合, 但 set中不能包含重复的元素, 这是与 vector 的区别

 std::set<int> myset;

 myset.insert(10); // 插入元素
 myset.insert(10); // 没用, 插入失败, 因为不能有重复元素
 myset.erase(10);  // 删除元素,如果元素存在的话

 myset.size();
 myset.clear();

 


 // list 相当于一个列表
 std::list<int> mylist;
 mylist.push_back(100);
 mylist.remove(100);

 /*
  *   vector用的是随机存取迭代器,list用的是双向迭代器
  *  
  *   如果我们需要随机访问一个容器则vector   要比list   好得多  
     *   如果我们已知要存储元素的个数则vector   又是一个比list   好的选择  
     *   如果我们需要的不只是在容器两端插入和删除元素则list   显然要比vector   好  
     *   除非我们需要在容器首部插入和删除元素否则vector   要比deque   好
  */

 return 0;
}

Feedback

# re: set、vector、list和deque 顺序容器  回复  更多评论   

2008-10-16 00:12 by 沈臻豪(foxtail)
仅仅为了熟悉一下 对吧 呵呵

# re: set、vector、list和deque 顺序容器  回复  更多评论   

2008-10-16 08:44 by S.l.e!ep.¢%
楼上的,被你看穿了~

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理