容器list与slist的简单应用

STL中List是双向链表,而Slist是单向链表。它们的区别:Slist的迭代器是单向的Forward Iterator,而list的迭代器是双向的Bidirectional Iterator。Slist所耗用的空间更小,操作更快。它们共同的特点是,插入、移除、接合等操作并不会造成原有的迭代器失效。slist插入时,需要从前遍历,找到插入点的位置。为了更快插入,提供了insert_after,erase_after。

list与slist的示意图:

容器list与slist的简单应用_第1张图片



简单应用:

#include    
#include    
#include   
using namespace std;   
int main(){   
  
    slist sl; //创建一个不存在任何元素的slist对象sl  
    list ls;  
    slist::iterator islist;//创建容器迭代器,访问容器中的元素  
    list::iterator ilist;  
  
    ls.push_front(2);//在list的头部添加一个元素  
    ls.push_front(1);  
    ls.push_back(3);//在list的末尾添加一个元素  
    ls.push_back(4);  
    ls.push_back(5);  
  
    ilist = --ls.end();    
    cout << *ilist << endl;   
    --ilist;  
    cout << *ilist << endl;  
    --ilist;  
    ilist = ls.erase(ilist);//删除当前位置的元素,ilist向后移一位  
    //ls.erase(ilist);//ilist仍指向当前位置  
    cout << *ilist << endl;  
    ilist = ls.insert(ilist,3);//ilist指向当前插入的元素  
    //ls.insert(ilist,3);//ilist指向插入之前的元素  
    cout << *ilist << endl;  
  
    for(ilist=ls.begin(); ilist!=ls.end(); ilist++)   
        cout << *ilist << " ";  
    cout<


运行结果:

5

4

4

3

1 2 3 4 5

-858993460

61

62

63

63

64

63

66 61 62 63


你可能感兴趣的:(编程基础)