存储 int 类型元素list<int>lstInt;// list 双向链表容器, 存储 float 类型元素list<float>lstFloat;// list 双向链表容器, 存储 string 类型元素list<string>lstString;// 控制台暂停 , 按任意键继续向后执行system("pause");return0;};
与list和vector不同,list的遍历不能使用下标遍历,因为他是链表。 但我们可以使用迭代器进行遍历,这里的迭代器是双向迭代器,而不是像list和vector一样是随机迭代器。 双向迭代器的构造使其可以进行++等访问操作,在底层实际上就是操作符重载。 (1)迭代器遍历 list<int>::iterator it = l3.begin(); while (it...
1. vector、list、deque: 使用迭代器进行遍历: ```cpp #include <iostream> #include <vector> #include <list> #include <deque> int main() { std::vector<int> vec = {1, 2, 3, 4, 5}; std::list<int> lst = {1, 2, 3, 4, 5}; std::deque<int> deq = {1, 2, 3, 4, 5};...
str.end());//迭代器区间构造//正向遍历list<char>::iterator it=l.begin();while(it!=l.end()){cout<<*it;it++;}cout<<endl;//反向遍历list<char>::reverse_iterator rit=l.rbegin();while(rit!=l.rend()){cout<<*rit;rit++;}cout<<endl;}...
STL中结点类容器(如:list,hash_map)遍历时进行删除时,需要这样做: for(list <int> ::iterator iter = m_list.begin(); iter != m_list.end(); ) { if(需要删除) { m_list.erase(iter++); } else ++iter; } 而不能这样: for(list <int> ::iterator iter = m_list.begin(); iter != m...
List.clear(); 遍历删除法,一个一个删除,这样的好处是,如果元素有申请内容或者系统资源,我们可以把他释放了,避免资源泄漏。 list_t::iterator iter; for(iter = List.begin(); iter != List.end() ;) { //这里可以做是否内存或者资源的操作
list 的访问及遍历操作已合并到【探究 [ 迭代器 ] 种类&在STL中的使用方式】一文中,传送门如下:额五、list 增删查改1.list 增删查改操作盘点构造函数声明功能说明push_front返回list的第一个节点中值的引用front返回list的最后一个节点中值的引用back在list首元素前插入值为val的元素push_front删除list中第一个...
list可以存储任意类型的数据,并提供了一系列方法来对链表进行操作,如在链表头部或尾部插入/删除元素,以及在任意位置插入/删除元素等。它还支持双向迭代器,可以方便地遍历链表的元素。 使用list的好处是,它在插入和删除元素时效率很高,因为只需要调整指针的指向即可,不需要像数组一样移动其他元素。此外,list的大小可以根...
还有list::insert(pos, begin, end),即拷贝插进一个区间的操作。你的做法是 for 循环遍历这个区间,一个个地插入链表。虽然这样做足够简单,但是这样是会频繁地改动中间节点的 next prev 指针的,效率很低。而且更致命的缺陷是,STL 规定了,如果中途有元素构造失败,整个的插入操作是不应该完成的!显然,如果在构造一...
调用size() 统计节点的数量,其实就是两个迭代器之间的 距离,这个函数可以自己遍历,也可以调用我们之前完成的distance函数,这个函数的作用就是 计算两个迭代器之间的距离,然后根据迭代器的 category会做一些优化 front表示返回头元素节点数据,因此对 begin()进行解引用操作即可。在begin操作结束后,返回的list的迭代器类...