clear();删除向量中的所有对象
erase(iterator it);删除it所指向的容器对象
insert(iterator it,const T&);向it所指的向量位置前插入一个对象
push_back(const T&);向向量尾部插入一个对象
push_front(const T&);向向量头部插入一个对象
remove(const T&);删除特定的对象
sort();排序
unique();唯一。把链表中前后有相同元素的结点删除
1 #include <iostream> 2 #include <list> 3 4 void main() 5 { 6 std::list<int>mylist; 7 8 mylist.push_back(1);//向向量尾部插入一个对象 9 mylist.push_back(2); 10 mylist.push_back(3); 11 mylist.push_back(4); 12 13 auto ibegin = mylist.begin();//迭代器 14 auto iend = mylist.end(); 15 16 for (; ibegin != iend; ibegin++)//使用迭代器进行遍历 17 { 18 std::cout << *ibegin << std::endl; 19 } 20 }
对特定元素进行删除,erase实现,先查找,后删除
1 #include <iostream> 2 #include <list> 3 4 void main() 5 { 6 std::list<int>mylist; 7 8 mylist.push_back(1);//向向量尾部插入一个对象 9 mylist.push_back(2); 10 mylist.push_back(3); 11 mylist.push_back(4); 12 13 auto ibegin = mylist.begin();//迭代器 14 auto iend = mylist.end(); 15 16 for (; ibegin != iend; ibegin++)//使用迭代器进行遍历 17 { 18 if (*ibegin == 3) 19 { 20 mylist.erase(ibegin); 21 break;//删除以后,一定要break,因为ibegin已经变更了 22 } 23 } 24 25 ibegin = mylist.begin();//迭代器 26 iend = mylist.end(); 27 28 for (; ibegin != iend; ibegin++)//使用迭代器进行遍历 29 { 30 std::cout << *ibegin << std::endl; 31 } 32 }
对特定元素进行删除,remove实现,先查找,后删除
1 #include <iostream> 2 #include <list> 3 4 void main() 5 { 6 int a[5] = { 1,2,3,4,5 }; 7 std::list<int>mylist(a, a + 5); 8 9 mylist.push_front(12);//向向量头部插入一个对象 10 11 auto ibegin = mylist.begin();//迭代器 12 auto iend = mylist.end(); 13 14 mylist.remove(3); 15 16 for (; ibegin != iend; ibegin++)//使用迭代器进行遍历 17 { 18 std::cout << *ibegin << std::endl; 19 } 20 }
在特定元素前插入新的元素,先查找,后插入
1 #include <iostream> 2 #include <list> 3 4 void main() 5 { 6 int a[5] = { 1,2,3,4,5 }; 7 std::list<int>mylist(a, a + 5); 8 9 mylist.push_front(12);//向向量头部插入一个对象 10 11 auto ibegin = mylist.begin();//迭代器 12 auto iend = mylist.end(); 13 14 for (; ibegin != iend; ibegin++)//使用迭代器进行遍历 15 { 16 if (*ibegin == 3) 17 { 18 mylist.insert(ibegin, 30); 19 break; 20 } 21 } 22 23 ibegin = mylist.begin();//迭代器 24 iend = mylist.end(); 25 26 for (; ibegin != iend; ibegin++)//使用迭代器进行遍历 27 { 28 std::cout << *ibegin << std::endl; 29 } 30 }
使用反向迭代器进行遍历
1 #include <iostream> 2 #include <list> 3 4 void main() 5 { 6 int a[5] = { 1,2,3,4,5 }; 7 std::list<int>mylist(a, a + 5); 8 9 auto rb = mylist.rbegin();//反向迭代器 10 auto re = mylist.rend(); 11 12 for (; rb != re; rb++)//使用迭代器进行遍历 13 { 14 std::cout << *rb << std::endl; 15 } 16 }
两个链表进行合并
必须先排序,后合并,否则会出错
1 #include <iostream> 2 #include <list> 3 4 void main() 5 { 6 int a[5] = { 1,2,3,104,5 }; 7 std::list<int>mylist1(a, a + 5); 8 9 int b[5] = { 11,22,33,44,55 }; 10 std::list<int>mylist2(b, b + 5); 11 12 mylist1.sort();//排序 13 mylist2.sort(); 14 15 mylist1.merge(mylist2);//合并。必须先排序,后合并,否则会出错 16 17 auto ibegin = mylist1.begin();//迭代器 18 auto iend = mylist1.end(); 19 20 for (; ibegin != iend; ibegin++)//使用迭代器进行遍历 21 { 22 std::cout << *ibegin << std::endl; 23 } 24 }
链表元素的唯一
必须先排序,后唯一
1 #include <iostream> 2 #include <list> 3 4 void main() 5 { 6 int a[6] = { 1,2,98,104,5,98 }; 7 std::list<int>mylist1(a, a + 6); 8 9 mylist1.sort();//排序 10 mylist1.unique();//唯一。必须先排序,后唯一 11 12 auto ibegin = mylist1.begin();//迭代器 13 auto iend = mylist1.end(); 14 15 for (; ibegin != iend; ibegin++)//使用迭代器进行遍历 16 { 17 std::cout << *ibegin << std::endl; 18 } 19 }