【C++】STL——list的介绍和使用、list增删查改函数的介绍和使用、push_back、pop_back

这篇具有很好参考价值的文章主要介绍了【C++】STL——list的介绍和使用、list增删查改函数的介绍和使用、push_back、pop_back。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.list的使用

list构造函数的介绍和使用

2.list的增删查改函数

【C++】STL——list的介绍和使用、list增删查改函数的介绍和使用、push_back、pop_back,C++,c++

(1)push_front 在list首元素前插入值为val的元素

  push_front()函数用于将一个新的元素插入到链表的开头位置。 通过调用push_front()函数并将待插入的元素作为参数传递给该函数,即可实现在链表开头插入新元素的操作。

  和链表的插入一样,push_front()函数的时间复杂度为O(1),因为在双向链表中插入元素到开头位置的操作只涉及到指针的重新链接,而不需要移动其他元素。

  以下是关于push_front()函数的定义和使用示例:

#include <iostream>
#include <list>

int main() {
    std::list<int> myList = {2, 3, 4};
    
    // 使用 push_front() 在链表开头插入元素
    myList.push_front(1);
    
    // 输出链表中的元素
    for (const auto& element : myList) {
        std::cout << element << " ";
    }
    std::cout << std::endl;

    return 0;
}

//1 2 3 4

(2)pop_front 删除list中第一个元素

  pop_front()函数用于删除链表的第一个元素。

  pop_front()函数的时间复杂度为O(1),因为在双向链表中删除开头元素的操作只涉及到指针的重新链接,而不需要移动其他元素。

  以下是关于pop_front()函数的定义和使用示例:

#include <iostream>
#include <list>

int main() {
    std::list<int> myList = {1, 2, 3, 4};

    // 使用 pop_front() 删除链表的第一个元素
    myList.pop_front();

    // 输出链表中的元素
    for (const auto& element : myList) {
        std::cout << element << " ";
    }
    std::cout << std::endl;

    return 0;
}

//2 3 4

(3)push_back 在list尾部插入值为val的元素

  push_back()函数用于将一个元素插入到链表的末尾位置。 通过调用push_back()函数并将待插入的元素作为参数传递给该函数,即可实现在链表末尾插入新元素的操作。

  以下是关于push_back()函数的定义和使用示例:

#include <iostream>
#include <list>

int main() {
    std::list<int> myList = {1, 2, 3};

    // 使用 push_back() 在链表末尾插入元素
    myList.push_back(4);

    // 输出链表中的元素
    for (const auto& element : myList) {
        std::cout << element << " ";
    }
    std::cout << std::endl;

    return 0;
}

//1 2 3 4

(4)pop_back 删除list中最后一个元素

  pop_back()函数用于删除std::list容器中的最后一个元素。

  以下是关于pop_back()函数的使用和定义示例:

#include <iostream>
#include <list>

int main() {
    std::list<int> myList = {1, 2, 3, 4};

    // 使用pop_back()删除链表的最后一个元素
    myList.pop_back();

    // 输出链表中的元素
    for (const auto& element : myList) {
        std::cout << element << " ";
    }
    std::cout << std::endl;

    return 0;
}

//1 2 3

(5)insert 在list position 位置中插入值为val的元素

  insert()函数用于在指定位置插入一个或多个元素。 通过提供插入位置的迭代器,并使用单个元素或迭代器范围作为参数,即可实现在指定位置插入新元素的操作。

  insert()函数的时间复杂度取决于插入的元素个数,如果只插入一个元素,则时间复杂度为O(1),如果插入多个元素,则时间复杂度为插入位置后元素个数的线性复杂度。

  以下是关于insert()函数的定义和使用示例:

  我们使用范围for循环遍历链表中的元素,并将它们输出。在循环体内,通过element变量获取当前元素的值,并将其输出。

#include <iostream>
#include <list>

int main() {
    std::list<int> myList = {1, 2, 3, 4};

    // 在第二个位置插入元素
    auto it = std::next(myList.begin()); // 获取迭代器指向第二个位置
    myList.insert(it, 5);

    // 在第三个位置插入多个元素
    std::list<int> newElements = {6, 7};
    it = std::next(myList.begin(), 2); // 获取迭代器指向第三个位置
    myList.insert(it, newElements.begin(), newElements.end());

    // 输出链表中的元素
    for (const auto& element : myList) {
        std::cout << element << " ";
    }
    std::cout << std::endl;

    return 0;
}

//1 5 6 7 2 3 4

(6)erase 删除list position位置的元素

  erase()函数用于从链表中删除一个或多个元素。

  以下是关于erase()函数的定义和使用示例:

#include <iostream>
#include <list>

int main() {
    std::list<int> myList = {1, 2, 3, 4};

    // 删除第三个位置上的元素
    auto it = std::next(myList.begin(), 2); // 获取迭代器指向第三个位置
    myList.erase(it);

    // 删除第二到第四个位置上的元素
    auto first = std::next(myList.begin(), 1); // 获取迭代器指向第二个位置
    auto last = std::next(myList.begin(), 4); // 获取迭代器指向第五个位置
    myList.erase(first, last);

    // 输出链表中的元素
    for (const auto& element : myList) {
        std::cout << element << " ";
    }
    std::cout << std::endl;

    return 0;
}

//1 4

(7)swap 交换两个list中的元素

  swap()函数用于交换两个对象的值。

  以下是关于swap()函数的定义和使用示例:

#include <iostream>
#include <vector>

int main() {
    int a = 5;
    int b = 10;

    // 使用 swap() 函数交换两个整数值
    std::swap(a, b);

    std::cout << "a: " << a << std::endl;
    std::cout << "b: " << b << std::endl;

    std::vector<int> vec1 = {1, 2, 3};
    std::vector<int> vec2 = {4, 5, 6};

    // 使用 swap() 函数交换两个向量的值
    std::swap(vec1, vec2);

    std::cout << "vec1: ";
    for (const auto& element : vec1) {
        std::cout << element << " ";
    }
    std::cout << std::endl;

    std::cout << "vec2: ";
    for (const auto& element : vec2) {
        std::cout << element << " ";
    }
    std::cout << std::endl;

    return 0;
}

//a: 10
//b: 5
//vec1: 4 5 6
//vec2: 1 2 3

(8)clear 清空list中的有效元素

  clear()函数用于清空链表,即删除链表中的所有元素。

  clear()函数的时间复杂度为O(N),其中N是链表中的元素个数。在清空链表时,clear()函数会对每个元素调用析构函数来释放内存。

  以下是关于clear()函数的定义和使用示例:文章来源地址https://www.toymoban.com/news/detail-606092.html

#include <iostream>
#include <list>

int main() {
    std::list<int> myList = {1, 2, 3, 4};

    // 使用 clear() 函数清空链表
    myList.clear();

    // 输出链表中的元素个数
    std::cout << "Size of myList after clear: " << myList.size() << std::endl;

    return 0;
}

//Size of myList after clear: 0

到了这里,关于【C++】STL——list的介绍和使用、list增删查改函数的介绍和使用、push_back、pop_back的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 【C++】STL——list介绍及使用

    【C++】STL——list介绍及使用

    🚀 作者简介:一名在后端领域学习,并渴望能够学有所成的追梦人。 🚁 个人主页:不 良 🔥 系列专栏:🛸C++  🛹Linux 📕 学习格言:博观而约取,厚积而薄发 🌹 欢迎进来的小伙伴,如果小伙伴们在学习的过程中,发现有需要纠正的地方,烦请指正,希望能够与诸君一同

    2024年02月12日
    浏览(11)
  • 【C++初阶】STL详解(五)List的介绍与使用

    【C++初阶】STL详解(五)List的介绍与使用

    本专栏内容为:C++学习专栏,分为初阶和进阶两部分。 通过本专栏的深入学习,你可以了解并掌握C++。 💓博主csdn个人主页:小小unicorn ⏩专栏分类:C++ 🚚代码仓库:小小unicorn的代码仓库🚚 🌹🌹🌹关注我带你学习编程知识 1.list是一种可以在常数范围内在任意位置进行插

    2024年02月04日
    浏览(14)
  • 【MySQL】MySQL表的增删查改以及聚合函数/group by句子的使用

    语法: 插入两条记录,value_list 数量必须和定义表的列的数量及顺序一致 注意,这里在插入的时候,也可以不用指定id(当然,那时候就需要明确插入数据到那些列了),那么mysql会使用默认的值进行自增。 插入两条记录,value_list 数量必须和指定列数量及顺序一致 由于 主键

    2024年01月19日
    浏览(12)
  • 【C++庖丁解牛】实现string容器的增删查改 | string容器的基本接口使用

    【C++庖丁解牛】实现string容器的增删查改 | string容器的基本接口使用

    🍁你好,我是 RO-BERRY 📗 致力于C、C++、数据结构、TCP/IP、数据库等等一系列知识 🎄感谢你的陪伴与支持 ,故事既有了开头,就要画上一个完美的句号,让我们一起加油 函数名称 功能说明 push_back 在字符串后尾插字符c append 在字符串后追加一个字符串 operator+= (重点) 在字符

    2024年03月14日
    浏览(10)
  • 【c++】vector的增删查改

    【c++】vector的增删查改

    为了防止和库里面发生冲突,定义一个命名空间,将类对象放在命名空间 里面 1.返回指向顺序表开始的迭代器函数 2.返回指向顺序表结尾的迭代器函数 3.返回容量大小的函数 4.返回顺序表元素多少 5.判断顺序表为空地的函数 5.一个运算符重载的函数(返回给定下标下的值)

    2024年02月20日
    浏览(8)
  • 【C++】STL---list基本用法介绍

    【C++】STL---list基本用法介绍

    个人主页:平行线也会相交💪 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 平行线也会相交 原创 收录于专栏【C++之路】💌 本专栏旨在记录C++的学习路线,望对大家有所帮助🙇‍ 希望我们一起努力、成长,共同进步。🍓 list 是STL中的一种 容器 ,底层其实就是一个 双向链

    2024年02月16日
    浏览(11)
  • C++:vector增删查改模拟实现

    C++:vector增删查改模拟实现

    提前在这说明下,vector增删查改模拟实现的成员变量博主采用 SGI版本 。下面给出其库中成员变量是哪些,后续的模拟实现都基于此。 我们发现库中定义了3个T*的变量。同时3个成员变量的意义如下: 我们先来看看vector库中的构造类型如下: 我们知道有三种构造方式,下面给

    2024年02月05日
    浏览(8)
  • 【C++】STL——queue的介绍和使用、queue的push和pop函数介绍和使用、queue的其他成员函数

    【C++】STL——queue的介绍和使用、queue的push和pop函数介绍和使用、queue的其他成员函数

    queue的介绍   1.队列是一种容器适配器,专门用于在FIFO上下文(先进先出)中操作,其中从容器一端插入元素,另一端提取元素。   2. 队列作为容器适配器实现,容器适配器即将特定容器类封装作为其底层容器类,queue提供一组特定的成员函数来访问其元素。元素从队尾入

    2024年02月06日
    浏览(9)
  • Flask从入门到放弃五(SQLAlchemy介绍与快速使用、创建表插入数据、Scoped_session线程安全、基本增删查改、表模型、Flask-SQLAlchemy、Migrate的使用)

    Flask从入门到放弃五(SQLAlchemy介绍与快速使用、创建表插入数据、Scoped_session线程安全、基本增删查改、表模型、Flask-SQLAlchemy、Migrate的使用)

    SQLAlchemy是一个基于Python实现的ORM框架。该框架建立在 DB API之上,使用关系对象映射进行数据库操作,简言之便是:将类和对象转换成SQL,然后使用数据API执行SQL并获取执行结果。 SQLAlchemy的组成部分有: Engine 框架的引擎 Connection Pooling 数据库连接池 Dialect 选择连接数据库的

    2024年02月04日
    浏览(10)
  • 【C++】vector类的模拟实现(增删查改,拷贝构造,赋值运算,深浅拷贝)

    【C++】vector类的模拟实现(增删查改,拷贝构造,赋值运算,深浅拷贝)

    🌏博客主页: 主页 🔖系列专栏: C++ ❤️感谢大家点赞👍收藏⭐评论✍️ 😍期待与大家一起进步! 我们模拟vector是用迭代器(start,end,endofstorage)来控制增删查改操作的 1普通构造 2迭代器构造 3初始化字符构造 4拷贝构造: 1当前大小(size()) 2总体容量(capacity()) 1begin()

    2024年02月15日
    浏览(9)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包