当前位置: 首页 > news >正文

国内做外贸网站的有哪些建立企业网站方案

国内做外贸网站的有哪些,建立企业网站方案,坪山网站建设平台,怎么区分营销型和展示型的网站目录 1. list 的介绍及使用 1.1 list 的介绍 知识点#xff1a; 小李的理解#xff1a; 1.2 list 的使用 1.2.1 list 的构造 知识点#xff1a; 小李的理解#xff1a; 代码示例#xff1a; 1.2.2 list 迭代器的使用 知识点#xff1a; 小李的理解#xff1… 目录 1. list 的介绍及使用 1.1 list 的介绍 知识点 小李的理解 1.2 list 的使用 1.2.1 list 的构造 知识点 小李的理解 代码示例 1.2.2 list 迭代器的使用 知识点 小李的理解 代码示例 1.2.3 list 的容量 知识点 小李的理解 代码示例 1.2.4 list 的元素访问 知识点 小李的理解 代码示例 1.2.5 list 的修改操作 知识点 小李的理解 代码示例 1.2.6 list 迭代器失效 知识点 小李的理解 代码示例 2. list 的模拟实现 知识点 小李的理解 代码示例 3. list 与 vector 的对比 知识点 小李的理解 总结 专栏C学习笔记  上一卷【C 】-vector新时代动态数组的革新与未来 C 中的 list 是一个强大的容器特别适用于需要频繁插入和删除元素的场景。本文将详细介绍 list 容器包括其介绍、使用方法、实现原理以及与 vector 容器的对比。 1. list 的介绍及使用 1.1 list 的介绍 知识点 list 是一种序列式容器底层实现为双向链表。双向链表中的每个元素存储在独立的节点中节点通过指针互相连接可以在常数时间内在任意位置进行插入和删除操作。与 forward_list 的单链表不同list 支持双向迭代。与其他序列式容器如 array、vector、deque相比list 在插入和删除操作方面表现更优但不支持随机访问。 小李的理解 list 就像一条双向街道上的车队每辆车节点都有前后两个链接指向前后两辆车。你可以轻松地在任何地方插入或删除一辆车而不需要移动其他车。但是如果你想找到某辆车就需要从头或尾开始一辆辆查找比较费时。 1.2 list 的使用 1.2.1 list 的构造 知识点 list 提供多种构造方法包括创建空的 list创建包含多个相同元素的 list使用区间构造 list 以及拷贝构造等。 小李的理解 构造 list 就像创建不同类型的车队你可以创建一个空车队或者一个全是同样车的车队还可以用现有的车队来创建新的车队。 代码示例 #include list #include iostreamint main() {// 创建一个空的 liststd::listint empty_list;// 创建一个包含 5 个值为 10 的元素的 liststd::listint filled_list(5, 10);// 使用区间构造 listint arr[] {1, 2, 3, 4, 5};std::listint range_list(arr, arr 5);// 打印 filled_list 的元素for(int n : filled_list) {std::cout n ;}std::cout std::endl;return 0; }这个程序首先创建一个空的 list然后创建一个包含 5 个值为 10 的 list接着用数组中的元素构造一个 list。最后打印 filled_list 的元素显示 5 个 10。 1.2.2 list 迭代器的使用 知识点 list 的迭代器类似于指针指向 list 中的节点。你可以使用迭代器遍历 list访问或修改元素。 小李的理解 迭代器就像你走在车队中的一个人你可以走到每辆车旁边查看里面的东西或者往回走查看后面的车。 代码示例 #include list #include iostreamint main() {std::listint my_list {1, 2, 3, 4, 5};// 正向迭代for (auto it my_list.begin(); it ! my_list.end(); it) {std::cout *it ;}std::cout std::endl;// 反向迭代for (auto rit my_list.rbegin(); rit ! my_list.rend(); rit) {std::cout *rit ;}std::cout std::endl;return 0; }这个程序创建一个包含 5 个整数的 list。正向迭代器遍历 list从头到尾打印元素反向迭代器遍历 list从尾到头打印元素。 1.2.3 list 的容量 知识点 你可以使用 empty() 函数检查 list 是否为空使用 size() 函数获取 list 中的元素个数。 小李的理解 这就像你检查车队中是否有车以及数一数车队中有多少辆车。 代码示例 #include list #include iostreamint main() {std::listint my_list {1, 2, 3, 4, 5};// 检查是否为空if (my_list.empty()) {std::cout List is empty std::endl;} else {std::cout List is not empty std::endl;}// 获取大小std::cout List size: my_list.size() std::endl;return 0; }程序首先检查 list 是否为空显然 my_list 不为空然后打印 list 的大小显示有 5 个元素。 1.2.4 list 的元素访问 知识点 你可以使用 front() 函数访问 list 的第一个元素使用 back() 函数访问 list 的最后一个元素。 小李的理解 这就像你想看看车队的第一辆车和最后一辆车里装了什么东西。 代码示例 #include list #include iostreamint main() {std::listint my_list {1, 2, 3, 4, 5};// 访问第一个和最后一个元素std::cout First element: my_list.front() std::endl;std::cout Last element: my_list.back() std::endl;return 0; }程序分别打印 list 的第一个和最后一个元素显示 1 和 5。 1.2.5 list 的修改操作 知识点 list 提供丰富的修改操作包括在头部和尾部插入和删除元素插入和删除特定位置的元素交换两个 list 的内容以及清空 list。 小李的理解 这就像你可以在车队的任何位置加车或减车甚至可以交换两队车里的车或者把整个车队清空。 代码示例 #include list #include iostreamint main() {std::listint my_list {1, 2, 3, 4, 5};// 插入和删除操作my_list.push_front(0); // 在前面插入 0my_list.push_back(6); // 在后面插入 6my_list.pop_front(); // 删除第一个元素my_list.pop_back(); // 删除最后一个元素// 插入和删除特定位置的元素auto it my_list.begin();it; // 指向第二个元素my_list.insert(it, 100); // 在第二个位置插入 100it my_list.begin();it;my_list.erase(it); // 删除第二个位置的元素// 交换和清空 liststd::listint another_list {10, 20, 30};my_list.swap(another_list);my_list.clear();return 0; }以下是程序在各步之后的状态 my_list 初始为 {1, 2, 3, 4, 5}插入 0 和 6 后为 {0, 1, 2, 3, 4, 5, 6}删除第一个和最后一个元素后为 {1, 2, 3, 4, 5}在第二个位置插入 100 后为 {1, 100, 2, 3, 4, 5}删除第二个位置的元素后为 {1, 2, 3, 4, 5}与 another_list 交换后 my_list 为 {10, 20, 30}清空后 my_list 为空 1.2.6 list 迭代器失效 知识点 在 list 中插入操作不会导致迭代器失效删除操作会使指向被删除节点的迭代器失效。 小李的理解 就像你从车队中移走一辆车时那个位置的指示牌迭代器也被移走了但其他位置的指示牌不受影响。 代码示例 #include list #include iostreamint main() {std::listint my_list {1, 2, 3, 4, 5};auto it my_list.begin();while (it ! my_list.end()) {it my_list.erase(it); // 删除元素后更新迭代器}return 0; }这个程序将删除 list 中的所有元素最后 my_list 为空。 每次删除一个元素后迭代器指向下一个元素直到 list 清空。 2. list 的模拟实现 知识点 实现一个简化版本的 list需要理解其底层结构和接口的含义。以下是一个简化的 list 实现示例 小李的理解 模拟实现 list 就像你自己动手造一辆汽车你需要理解汽车的每个部件和它们如何协同工作。 代码示例 #include iostreamtemplatetypename T class Node { public:T data;Node* prev;Node* next;Node(T val) : data(val), prev(nullptr), next(nullptr) {} };templatetypename T class List { private:NodeT* head;NodeT* tail;public:List() : head(nullptr), tail(nullptr) {}void push_back(T val) {NodeT* newNode new NodeT(val);if (!tail) {head tail newNode;} else {tail-next newNode;newNode-prev tail;tail newNode;}}void print() {NodeT* temp head;while (temp) {std::cout temp-data ;temp temp-next;}std::cout std::endl;}~List() {NodeT* temp;while (head) {temp head;head head-next;delete temp;}} };int main() {Listint my_list;my_list.push_back(1);my_list.push_back(2);my_list.push_back(3);my_list.print();return 0; }这个程序手动实现了一个简单的 list并添加了 3 个元素。最终打印出 list 中的所有元素。 3. list 与 vector 的对比 知识点 底层结构 vector动态顺序表连续内存空间。list双向链表不连续。 随机访问 vector支持效率为 O(1)。list不支持效率为 O(N)。 插入和删除 vector效率低时间复杂度为 O(N)。list效率高时间复杂度为 O(1)。 空间利用率 vector高连续空间缓存利用率高。list低节点动态分配容易造成内存碎片。 迭代器 vector原生指针。list封装的节点指针。 迭代器失效 vector插入时可能失效删除时当前迭代器失效。list插入不会失效删除时当前迭代器失效。 使用场景 vector高效存储随机访问。list频繁插入和删除操作。 小李的理解 vector 就像一块连续的停车场每辆车元素都紧挨着如果你要在中间插入或删除一辆车就需要挪动很多车。而 list 就像一列火车每节车厢元素独立可以随意插入或移除车厢但要找到某个特定车厢就得一节一节地找。 总结 C 中的 list 容器是一个基于双向链表的序列式容器适用于需要频繁插入和删除操作的场景但不支持随机访问。list 提供了多种构造方法和丰富的操作接口包括插入、删除、访问等。与 vector 相比list 在插入和删除操作上更高效但在随机访问和空间利用率上较差。
http://www.hkea.cn/news/14458388/

相关文章:

  • 个人和做网站方签合同模板做淘宝网站怎么弄
  • 现在做网站一般做多宽济南建站模板
  • 西安网站推广公司电话做结构图的网站
  • 网站名后台修改后 前台不显示wordpress 写文章 插件
  • 惠州做网站建设网站建设自查及整改报告
  • 创建网站的app慈溪app开发公司
  • 长沙网站优化技巧徐州seo管理
  • 福州网站建设服务上海龙元建设网站
  • 潜江网站建设兼职青岛制作公司网站
  • 宿迁市区建设局网站网站开发基本要求
  • 百度网站大全首页自己搭建网络培训平台
  • diy网站腾讯云做的网站会被拦截么
  • 网站开发的教学网站网站页面外链怎么做
  • 网站有哪些推荐爱站seo查询软件
  • 定制网站建设创意3d模型代做网站
  • 验证码平台网站开发做ppt封面的网站
  • 网站点击量统计企业响应式网站建设报价
  • 免费好用的网站制作网站联盟广告
  • 做的好的手机网站有哪些内容营销型网站托管
  • 做阿里巴巴网站有什么用html免费素材
  • 整形网站源码网上工伤做实网站
  • 深圳网站建设三把火凤阳县建设局网站
  • 大连 网站维护昆明网络推广公司
  • 石家庄市住房和城乡建设局官方网站餐饮加盟网站建设案例
  • 门户网站建设对策及建议自己做的动画买给网站
  • 服装销售 网站建设论文装潢设计公司
  • 网站设计公司哪家好易语言可以做网站吗
  • 达内网站开发培训遵义做网站
  • 外观设计网站贵池区城乡与住房建设网站
  • 阿里手机网站开发框架广告公司名字 三个字