C++ list基础概念、list初始化、list赋值操作、list大小操作、list数据插入 ...

打印 上一主题 下一主题

主题 1836|帖子 1836|积分 5508

list基础概念:list中的每一部分是一个Node,由三部分组成:val、next、prev(指向上一个节点的指针)



list初始化的代码,见下
  1. #include<iostream>
  2. #include<list>
  3. using namespace std;
  4. void printList(const list<int>& l) {
  5.         for (list<int>::const_iterator it = l.begin(); it != l.end(); it++) {
  6.                 cout << *it << " ";
  7.         }
  8.         cout << endl;
  9. }
  10. int main() {
  11.         // 1 默认构造函数
  12.         list<int> l1;
  13.         cout << "l1: ";
  14.         printList(l1);
  15.         // 2 初始化列表
  16.         list<int> l2_1 = { 7,6,5,4,3 };
  17.         cout << "l2_1: ";
  18.         printList(l2_1);
  19.         list<int> l2_2({ 7,5,4,3,2 });
  20.         cout << "l2_2: ";
  21.         printList(l2_2);
  22.         // 3 迭代器
  23.         list<int> l3(l2_2.begin(), l2_2.end());
  24.         cout << "l3: ";
  25.         printList(l3);
  26.         // 4 全0初始化
  27.         list<int> l4(8);
  28.         cout << "l4: ";
  29.         printList(l4);
  30.         // 5 初始化a个b
  31.         list<int> l5(5, 8);
  32.         cout << "l5: ";
  33.         printList(l5);
  34.         // 6 拷贝构造函数
  35.         list<int> l6(l2_2);
  36.         cout << "l6: ";
  37.         printList(l6);
  38.         return 0;
  39. }
复制代码
list赋值操作,代码见下
  1. #include<iostream>
  2. #include<list>
  3. using namespace std;
  4. void printList(const list<int>& l) {
  5.         for (list<int>::const_iterator it = l.begin(); it != l.end(); it++) {
  6.                 cout << *it << " ";
  7.         }
  8.         cout << endl;
  9. }
  10. int main() {
  11.        
  12.         list<int> l1 = { 5, 6, 7, 3, 1 };
  13.         list<int> l2;
  14.         // 1 =
  15.         l2 = l1;
  16.         printList(l2);
  17.         // 2 assign(迭代器)
  18.         list<int> l3;
  19.         l3.assign(l1.begin(), l1.end());
  20.         printList(l3);
  21.         // 3 assign(初始化列表)
  22.         list<int> l4;
  23.         l4.assign({ 5, 9, 1, 2, 4 });
  24.         printList(l4);
  25.         // 4 assign(a, b)
  26.         list<int> l5;
  27.         l5.assign(5, 4);
  28.         printList(l5);
  29.         return 0;
  30. }
复制代码
list大小操作,代码见下
 
  1. #include<iostream>
  2. #include<list>
  3. using namespace std;
  4. void printList(const list<int>& l) {
  5.         for (list<int>::const_iterator it = l.begin(); it != l.end(); it++) {
  6.                 cout << *it << " ";
  7.         }
  8.         cout << endl;
  9. }
  10. /*
  11. empty
  12. size
  13. resize
  14. */
  15. int main() {
  16.        
  17.         list<int> l1;
  18.         cout << "l1.empty() = " << l1.empty() << endl;
  19.         cout << "l1.size() = " << l1.size() << endl;
  20.         l1.assign({ 4, 3, 6, 2, 1 });
  21.         printList(l1);
  22.         l1.resize(18);
  23.         cout << "l1.empty() = " << l1.empty() << endl;
  24.         cout << "l1.size() = " << l1.size() << endl;
  25.         printList(l1);
  26.         l1.resize(20, 6);
  27.         cout << "l1.empty() = " << l1.empty() << endl;
  28.         cout << "l1.size() = " << l1.size() << endl;
  29.         printList(l1);
  30.         l1.resize(1000);
  31.         l1.resize(7);
  32.         cout << "l1.empty() = " << l1.empty() << endl;
  33.         cout << "l1.size() = " << l1.size() << endl;
  34.         printList(l1);
  35.         return 0;
  36. }
复制代码
效果见下,供理解

list数据插入,代码见下:
  1. #include<iostream>
  2. #include<list>
  3. using namespace std;
  4. void printList(const list<int>& l) {
  5.         for (list<int>::const_iterator it = l.begin(); it != l.end(); it++) {
  6.                 cout << *it << " ";
  7.         }
  8.         cout << endl;
  9. }
  10. /*
  11. push_front
  12. push_back
  13. insert
  14. */
  15. int main() {
  16.         list<int> l;
  17.         //1 push_front
  18.         l.push_front(-3);
  19.         l.push_front(-2);
  20.         l.push_front(-1);
  21.         //2 push_back
  22.         l.push_back(3);
  23.         l.push_back(2);
  24.         l.push_back(1);
  25.         //3 insert(迭代器, 值)
  26.         list<int>::iterator it = l.begin();
  27.         it++;
  28.        
  29.         l.insert(it, 0);
  30.         printList(l);
  31.         //4 insert(迭代器, 数量, 值)
  32.         it = l.end();
  33.         --it;
  34.         l.insert(it, 5, 8);
  35.         printList(l);
  36.         //5 insert(迭代器, 迭代器的开始位置, 迭代器的结束位置)
  37.         it = l.begin();
  38.         it++;
  39.         l.insert(it, l.begin(), l.end());
  40.         printList(l);
  41.         return 0;
  42. }
复制代码
运行效果见下,便于理解


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

水军大提督

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表