std::vector<int> vec = {1, 2, 3, 4, 5}; // 使用迭代器遍历容器 for (std::vector<int>::iterator it = vec.begin(); it != vec.end(); ++it) { std::cout << *it << ' '; } std::cout << std::endl; // 使用范围for循环遍历容器(C++11及以后) for (int num : vec) { ...
STL中的container各有专长,最常用的是std::vector,可以完全取代array,第二常用的是std::list。std::vector的优点在于non-sequential access超快,新增数据于数据后端超快,但insert和erase任意资料则相当缓慢;std::list则是insert和erase速度超快,但non-sequential access超慢,此范例以实际时间比较vector和list间的优缺点。
int a1 =vec[2]; std::vector<int>::iterator it1 = vec.begin()+2;
vector<int> f(e, e + 6); //初始数据为 从数组中0到5(共6个)个元素,容量也是6 1. 2. 3. 4. 5. 6. 2. 常用函数 vector<int> a; vector<int> ::iterator iter = a.begin(); //获取迭代器首地址 vector<int> ::const_iterator const_iter = a.begin(); //获取const类型迭代器 只读 ...
for ([std::vector](http://en.cppreference.com/w/cpp/container/vector)<int>::iterator it = ...
1)对于顺序追加的操作,当vector预先分配的内存不够时,需要重新分配内存并复制对象,会对效率产生负面的影响;而list在每添加一个对象时都必须动态分配,每次动态分配内存都需要消耗系统CPU时间,这也是严重影响list效率的问题,所以list的运行效率反而可能比vector的还要低。而从另外一角度,list每个对象都必须有指向下一个对...
std::vector<int> nums3;// 从 nums1 复制赋值数据到 nums2nums2 = nums1;//此时nums2 = {3, 1, 4, 6, 5, 9}// 从 nums1 移动赋值数据到 nums3,// 修改 nums1 和 nums3nums3 = std::move(nums1);//此时 nums1 = {}, nums3 = {3, 1, 4, 6, 5, 9}// initializer_list 的...
总的来说,迭代器是一个_List_node_base型的指针。每种Containers都含有一个iterator成员,实现了一系列的操作符重载,用于模拟指针操作(vector,array除外,两者的iterator都是pointer iterator)。 operator++()和operator++(int) // gcc 11 stl_list.h _Self& operator++() _GLIBCXX_NOEXCEPT { _M_node = _M_...
#include<vector>void vectest() { std::vector<int>vi; for (int i = 1; i < 10; ++i) { vi.push_back(i); } //std::vector<decltype(vi.begin())>iter_vector; std::vector<std::vector<int>::iterator> iter_vector; for (auto it = vi.begin(); it != vi.end(); ++it) { ...
re: 用std::vector的const_iterator对元素赋值会怎样? 2007-10-31 12:55lovedday ... 能改变值是正常的,const_iterator限定的是stDownItem,而不是stUpdateItem,而你改变的是stUpdateItem的值,当然可以。 for (tDownItems::const_iterator it = downList.begin(); it != downList.end(); ++it) {...