STL——list

1.关键概述

  list 是定义在 namespace::std 的模板,声明在 <list> ,存储结构是 双向链表, 提供的 正向和反向迭代器。

2.构造list对象

list<int> intlist0;  // 构造一个空list
list<int> intlist1(3);  // 构造3个元素的 list,元素使用默认构造
list<int> intlist2(3, 2);  // 构造3个元素的list, 元素初始化为3
list<int> intlist3(3, 1, intlist2.get_allocator());  // 构造一个3元素list,初始化为1,并使用intlist的内存分配策略
list<int> intlist4(intlist2);  // 拷贝构造

3.元素的增删

front();    // 返回第一个元素,(不检查容器是否为空)
back();    // 返回最后元素(不检查容器是否为空)
pop_back();
pop_front();
push_back();
push_front();
assign();    // 擦除链表元素,并复制新元素
empty();

4.迭代器访问list中元素

begin();
end();
rbegin();
rend();
list<int>::reverse rintiter = intlist.rbegin(); // 逆向迭代器的初始化

4.操作list中元素

clear();
erase(position)    // 删除迭代器position指向的元素
erase(beg, end)    // 删除 beg 到 end-1 的元素
insert(position, elem); // 将elem插入到 position指向位置,并返回新元素位置
insert(position, beg, end);
resize(num);    // 改变size,如果元素增加使用默认构造函数
resize(num, elem);
size();
max_size();
扫描二维码关注公众号,回复: 4497487 查看本文章

5.list算法

merge()    // 合并两个有序链表,并使之有序
sort()    // 默认升序,可以自定义回调函数
reverse()
remove()
remove_if() // 参数为谓词,删除满足谓词的元素
splice()    // 删除相邻重复元素
swap()    // 交换两个链表

对于void remove_if( _Predicate ) 参数为谓词,谓词可以用函数指针或函数对象表达。

  template<class T> class is_odd:public unary_function<T, bool> {
          public:
                  bool operator() (T &val) 
                  {   
                          return (val % 2); 
                  }         
  };
  
  int main()
  {
          list<int> intlist;
          for (int i = 10; i > 0; i--) {
                  intlist.push_back(i);
          }   
          intlist.remove(1);
          for (list<int>::iterator iter = intlist.begin(); iter != intlist.end(); iter++) {
                  cout << *iter << "  ";
          }   
          cout << "\n";
          intlist.remove_if(is_odd<int>());
          for (list<int>::iterator iter = intlist.begin(); iter != intlist.end(); iter++) {
                  cout << *iter << "  ";
          }   
          cout << "\n";
            
  
          return 0;
  }

猜你喜欢

转载自www.cnblogs.com/yangxinrui/p/10117368.html
今日推荐