加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 创业 > 正文

C++操作std::forward_list查找插入数据要领示例

发布时间:2020-12-29 04:27:52 所属栏目:创业 来源:网络整理
导读:std::forward_list先容 std::forward_list是在C++11中引入的单向链表或叫正向列表。forward_list具有插入、删除表项速率快、耗损内存空间少的特点,但只能向前遍历。与其余序列容器(array、vector、deque)对比,forward_list在容器内恣意位置的成员的插入、

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 */

总结

以上就是这篇文章的所有内容了,但愿本文的内容对各人的进修可能事变能带来必然的辅佐,假若有疑问各人可以留言交换,感谢各人对编程小能力的支持。

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读