- 1. list和vector的区别
- 2. 初始化list
- 3. 利用迭代器遍历list元素
- 1. 遍历可被修改的list元素
- 2. 遍历不可被修改的list元素(const)
- 4. list中一些可以直接使用的函数
- 5. c++11 中遍历list元素
1. list和vector的区别
2. 初始化listlist 和 vector 的区别:
相关代码如下:
list3. 利用迭代器遍历list元素li; for(int i=0; i<10; i++){ // li.push_back(i); // 尾插 li.push_front(i); // 头插 }
我们可以将迭代器的使用看作是获取list中元素的指针,list.begin()可以看作为获取该list的头节点地址,list.end()可以看作为获取该list的最后一个元素的地址。
1. 遍历可被修改的list元素list2. 遍历不可被修改的list元素(const)::iterator it = li.begin(); // 迭代器 while(it != li.end()){ cout << *it << " "; *it = 10+*it; ++it; } cout << endl;
const list4. list中一些可以直接使用的函数cli = li; list ::const_iterator cit = cli.cbegin(); //const型迭代器 while(cit != cli.cend()){ cout << *cit << " "; ++cit; } cout << endl;
remove():按值删除元素,如li.remove(15)即为删除li中值为15的元素。
int main(){ listli; for(int i=0; i<10; i++){ // li.push_back(i); li.push_front(i); } li.remove(5); list ::iterator it = li.begin(); while(it != li.end()){ cout << *it << " "; ++it; } cout << endl; }
sort():对list中的元素进行排序。
int main(){ listli; for(int i=0; i<10; i++){ // li.push_back(i); li.push_front(i); } li.sort(); list ::iterator it = li.begin(); while(it != li.end()){ cout << *it << " "; ++it; } cout << endl; }
advance(): 移动迭代器指向,如advance(it, 2)即是将it向后移动两个位置。
需注意的是还可以将移动长度设置为负数,如advance(it ,-2)即是将it向前移动两个位置。
int main(){ listli; for(int i=0; i<10; i++){ // li.push_back(i); li.push_front(i); } list ::iterator it = li.begin(); advance(it,2); cout << *it << endl; }
distance(): 计算两者之间的距离 , 如distance(li.begin(), it)即为计算it所指与列表第一个元素之间的距离,我们可以用该函求得it所指的下标。
int main(){ list5. c++11 中遍历list元素li; for(int i=0; i<10; i++){ // li.push_back(i); li.push_front(i); } list ::iterator it = li.begin(); ++it; cout << distance(li.begin(), it) << endl; }
在c++中可以直接使用for(int n:li)来遍历list元素,具体代码如下:
int main(){ listli; for(int i=0; i<10; i++){ // li.push_back(i); li.push_front(i); } for(int n:li){ cout << n << " "; } cout << endl; }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)