与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};...
存储 int 类型元素list<int>lstInt;// list 双向链表容器, 存储 float 类型元素list<float>lstFloat;// list 双向链表容器, 存储 string 类型元素list<string>lstString;// 控制台暂停 , 按任意键继续向后执行system("pause");return0;};
c++的stl list 提供pop_back()函数来删除最后一个元素。 List.pop_back(); (5)删除所有元素 简单粗暴的方法:调用clear() List.clear(); 遍历删除法,一个一个删除,这样的好处是,如果元素有申请内容或者系统资源,我们可以把他释放了,避免资源泄漏。
小容器时,表现最好的是vector和forward_list。 对比结果: vector的表现最好。 结论: vector容器在头部、中间插入时性能随着元素个数增多,性能变的非常糟糕。但是在尾部插入场景下,性能是极好的。 forward_list和deque的插入操作性能在各种场景下,都比较好。
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...
在SGI的STL实现中呢,将list的节点分为了指针域和数据域。为什么要这么划分,当然是有它的好处的。 我们对list的操作中更多的是对节点进行遍历,而访问数据成员总是在我们找到了某个节点的时候。那我们在遍历操作中只存放节点的指针域,而不存放数据是不是很大的节省了空间呢,特别是对于c++来说,这个数据域大多都是我...
voidTestList(){string str="I love BeiJing";list<char>l(str.begin(),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<<*...
(3)遍历list链表 想要输出list链表中的所有数据,只能使用for循环依次输出。有2种for循环的编写方式: for(auto it = lst2.begin(); it!=lst2.end(); it++){ //使用迭代器输出 //写auto类型就不用去记忆list迭代器的变量类型全称list<int>::const_iterator ...