C++利用std::forward_list查找插入数据方法示例

发布时间 - 2026-01-11 02:46:04    点击率:

std::forward_list介绍

std::forward_list是在C++11中引入的单向链表或叫正向列表。forward_list具有插入、删除表项速度快、消耗内存空间少的特点,但只能向前遍历。与其它序列容器(array、vector、deque)相比,forward_list在容器内任意位置的成员的插入、提取(extracting)、移动、删除操作的速度更快,因此被广泛用于排序算法。forward_list是一个允许在序列中任何一处位置以常量耗时插入或删除元素的顺序容器(sequence Container)。forward_list可以看作是对C语言风格的单链表的封装,仅提供有限的接口,和C中它的实现相比,基本上不会有任何开销。当不需要双向迭代的时候,与std::list相比,该容器具有更高的空间利用率。

forward_list的主要缺点是不能在常量时间内随机访问任意成员,对成员的访问需要线性时间代价;以及存储链接信息需要消耗内存,特别是当包含大量的小规模成员时。forward_list处于效率考虑,有意不提供size()成员函数。获取forward_list所包含的成员个数需要用std::distance(_begin, _end)算法。forward_list中的每个元素保存了定位前一个元素及后一个元素的信息,不能进行直接随机访问操作。

本文将给大家介绍关于C++用std::forward_list查找插入数据的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。

示例代码:

//
// Forward_list.hpp
// 练习
//
// Created by hanzhiqiang on 2017/6/11.
// Copyright © 2017年 hanzhiqiang. All rights reserved.
//

#ifndef Forward_list_hpp
#define Forward_list_hpp

#include <stdio.h>
#include <iostream>
#include <forward_list>

using namespace std;

int main()
{
  forward_list<string> mList;
  mList.emplace_front("aaa");
  mList.emplace_front("bbb");
  mList.emplace_front("ccc");
  
  for (auto it = mList.begin(); it != mList.end(); it++)
  {
    cout<<*it<<endl;
  }
  
//  for (auto it = mList.before_begin(); it != mList.end(); it++)
//  {
//    cout<<*it<<endl;
//  }
  
//  auto itList = find(mList.begin(), mList.end(), "fff");
//  if (itList != mList.end()) \
//  {
//    mList.emplace_after(itList, "111");
//  }
//  else
//  {
//    mList.insert_after(mList.end(),"222");//c++ primer p 313 向末尾插入数据结果未知 error
//  }
  
  auto prev = mList.before_begin();
  auto curr = mList.begin();
  bool isInsert = false;
  while (curr != mList.end())
  {
    if (*curr == "fff")
    {
      curr = mList.insert_after(curr, "111");
      isInsert = true;
    }
    prev = curr;
    curr++;
  }
  
  if(!isInsert)
  {
    curr = mList.insert_after(prev, "222");//向末尾插入数据成功
  }
  
  for (auto it = mList.begin(); it != mList.end(); it++)
  {
    cout<<"插入元素后"<<*it<<endl;
  }
  
  cout<<"fuck"<<endl;
  return 0;
}

#endif /* Forward_list_hpp */

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对的支持。


# std  # forward  # list  # c  # C++中的std::initializer_list使用解读  # C++ STL标准库之std::list使用介绍及用法详解  # C++ std::initializer_list 实现原理解析及遇到问题  # C++ std::list的merge()使用方式与分析  # 是一个  # 链表  # 是在  # 相关内容  # 不需要  # 说了  # 遍历  # 不多  # 能在  # 时间内  # 更高  # 一处  # 更快  # 或删除  # 这篇文章  # 速度快  # 谢谢大家  # 需要用  # 将给  # 所包含 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel如何实现URL美化Slug功能_Laravel使用eloquent-sluggable生成别名【方法】  浅谈redis在项目中的应用  JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)  如何自定义建站之星模板颜色并下载新样式?  作用域操作符会触发自动加载吗_php类自动加载机制与::调用【教程】  深圳网站制作培训,深圳哪些招聘网站比较好?  重庆市网站制作公司,重庆招聘网站哪个好?  如何快速搭建支持数据库操作的智能建站平台?  Laravel的Blade指令怎么自定义_创建你自己的Laravel Blade Directives  如何挑选高效建站主机与优质域名?  电视网站制作tvbox接口,云海电视怎样自定义添加电视源?  Laravel表单请求验证类怎么用_Laravel Form Request分离验证逻辑教程  香港服务器网站生成指南:免费资源整合与高速稳定配置方案  如何在云指建站中生成FTP站点?  java ZXing生成二维码及条码实例分享  如何实现javascript表单验证_正则表达式有哪些实用技巧  邀请函制作网站有哪些,有没有做年会邀请函的网站啊?在线制作,模板很多的那种?  JavaScript如何操作视频_媒体API怎么控制播放  Laravel怎么上传文件_Laravel图片上传及存储配置  Laravel distinct去重查询_Laravel Eloquent去重方法  使用C语言编写圣诞表白程序  Win11搜索栏无法输入_解决Win11开始菜单搜索没反应问题【技巧】  Python自然语言搜索引擎项目教程_倒排索引查询优化案例  VIVO手机上del键无效OnKeyListener不响应的原因及解决方法  公司门户网站制作流程,华为官网怎么做?  如何获取PHP WAP自助建站系统源码?  怎么用AI帮你为初创公司进行市场定位分析?  Laravel如何获取当前用户信息_Laravel Auth门面获取用户ID  东莞市网站制作公司有哪些,东莞找工作用什么网站好?  专业型网站制作公司有哪些,我设计专业的,谁给推荐几个设计师兼职类的网站?  Laravel怎么做数据加密_Laravel内置Crypt门面的加密与解密功能  rsync同步时出现rsync: failed to set times on “xxxx”: Operation not permitted  Laravel Vite是做什么的_Laravel前端资源打包工具Vite配置与使用  Python文件流缓冲机制_IO性能解析【教程】  Laravel怎么配置S3云存储驱动_Laravel集成阿里云OSS或AWS S3存储桶【教程】  如何在Ubuntu系统下快速搭建WordPress个人网站?  ,网页ppt怎么弄成自己的ppt?  实例解析Array和String方法  深圳网站制作公司好吗,在深圳找工作哪个网站最好啊?  Laravel怎么定时执行任务_Laravel任务调度器Schedule配置与Cron设置【教程】  利用python获取某年中每个月的第一天和最后一天  高防服务器如何保障网站安全无虞?  简单实现Android文件上传  太平洋网站制作公司,网络用语太平洋是什么意思?  如何快速重置建站主机并恢复默认配置?  Laravel如何使用集合(Collections)进行数据处理_Laravel Collection常用方法与技巧  电商网站制作多少钱一个,电子商务公司的网站制作费用计入什么科目?  Laravel路由怎么定义_Laravel核心路由系统完全入门指南  简单实现jsp分页  晋江文学城电脑版官网 晋江文学城网页版直接进入