如果遇到常量容器类型,需要使用迭代器的时候,那么必须使用常量迭代器——const_iterator

#include <iostream>
#include <string>
#include <vector>
#include <deque>
#include <list>
#include <forward_list>
#include <string>
#include <array>
using namespace std;
#define LENGTH  10
typedef  int TYPE;
typedef  vector<TYPE> VECTORTYPE;
typedef  deque<TYPE> DEQUETYPE;
typedef  list<TYPE> LISTTYPE;
typedef  forward_list<TYPE> FORWARD_LISTTYPE;
typedef  array<TYPE,LENGTH>  ARRAYTYPE;
void print(VECTORTYPE & );
void print(DEQUETYPE & );
void print(LISTTYPE & );
void print(FORWARD_LISTTYPE & );
void print(ARRAYTYPE & );
void print(string &);
void print(list<string> &);
int main()
{list<string> names;vector<const char*> oldstyle = {"asdf","asdf"};//names = oldstyle;wrong ,type is not matchingnames.assign(oldstyle.begin(),oldstyle.end());print(names);const list<const char*> c_str{"const string1","const string2","const string3"};
//因为c_str是常量迭代器,它的迭代器必须是常量迭代器类型:const_iterator,例如下面会报错for(list<const char*>::iterator i = c_str.begin(); i != c_str.end(); ++i) cout << *i << " ";return 0;
}
void print(VECTORTYPE &vec)
{for(VECTORTYPE::iterator i  = vec.begin() ; i != vec.end() ; ++i){ cout << *i << " ";}cout << endl;return ;
}void print(DEQUETYPE &vec)
{for(DEQUETYPE::iterator i  = vec.begin() ; i != vec.end() ; ++i){ cout << *i << " ";}cout << endl;return ;
}void print(LISTTYPE &vec)
{for(LISTTYPE::iterator i  = vec.begin() ; i != vec.end() ; ++i){ cout << *i << " ";}cout << endl;return ;
}void print(FORWARD_LISTTYPE &vec)
{for(FORWARD_LISTTYPE::iterator i  = vec.begin() ; i != vec.end() ; ++i){ cout << *i << " ";}cout << endl;return ;
}void print(ARRAYTYPE &vec)
{for(ARRAYTYPE::iterator i  = vec.begin() ; i != vec.end() ; ++i){ cout << *i << " ";}cout << endl;return ;
}void print(string & s_vec)
{for(string::iterator i = s_vec.begin(); i != s_vec.end() ; ++i)  {cout << *i <<  " ";}cout << endl;
}
void print( list<string> &l)
{for(list<string>::iterator i = l.begin();i != l.end();++i)cout << *i << " ";cout << endl;}//上述代码会在g++编译器中报错:
r@r-Sys:~/c++/9/now$ ./123
asdf asdf
const string1 const string2 const string3 r@r-Sys:~/c++/9/now$ g++ 11.cc -o 123
11.cc: In function ‘int main()’:
11.cc:33:50: error: conversion from ‘std::__cxx11::list<const char*>::const_iterator {aka std::_List_const_iterator<const char*>}’ to non-scalar type ‘std::__cxx11::list<const char*>::iterator {aka std::_List_iterator<const char*>}’ requestedfor(list<const char*>::iterator i = c_str.begin(); i != c_str.end(); ++i)

修改方法是:把代码中提示的那里的iterator改成:const_iterator即可

const_iterator简单介绍相关推荐

  1. 简单介绍一下c++正则表达式

    目录 1.正则表达式的需求 1.1普通字符 1.2特殊字符 1.3限定字符 2 std::regex极其相关 2.1regex_match 2.2regex_replace and regex_sea ...

  2. 遗传算法的简单介绍以及模式定理的简单证明

    遗传算法   遗传算法(Genetic Algorithm,GA),最早是由美国的John holland在20世纪70年代提出.算法通过模拟达尔文生物进化论的自然选择以及遗传学机理的生物进化过程来搜 ...

  3. 2021年大数据ELK(十八):Beats 简单介绍和FileBeat工作原理

    全网最详细的大数据ELK文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 Beats 简单介绍和FileBeat工作原理 一.Beats 二.FileB ...

  4. 2021年大数据ELK(十五):Elasticsearch SQL简单介绍

    全网最详细的大数据ELK文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 Elasticsearch SQL简单介绍 一.SQL与Elasticsear ...

  5. 2021年大数据ELK(二):Elasticsearch简单介绍

    全网最详细的大数据ELK文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 系列历史文章 一.Elasticsearch简介 1.介绍 2.创始人 二.E ...

  6. iOS开发UI篇—多控制器和导航控制器简单介绍

    iOS开发UI篇-多控制器和导航控制器简单介绍 一.多控制器 一个iOS的app很少只由一个控制器组成,除非这个app极其简单.当app中有多个控制器的时候,我们就需要对这些控制器进行管理 有多个vi ...

  7. 简单介绍一下R中的几种统计分布及常用模型

    统计学上分布有很多,在R中基本都有描述.因能力有限,我们就挑选几个常用的.比较重要的简单介绍一下每种分布的定义,公式,以及在R中的展示. 统计分布每一种分布有四个函数:d――density(密度函数) ...

  8. LVS(Linux Virtual Server)三种负载均衡模型和十种调度的简单介绍

    LVS(Linux Virtual Server)三种负载均衡模型和十种调度的简单介绍 LVS (Linux Virtual Server) LVS(Linux Virtual Server)其实就是 ...

  9. dubbo学习过程、使用经验分享及实现原理简单介绍

    一.前言 部门去年年中开始各种改造,第一步是模块服务化,这边初选dubbo试用在一些非重要模块上,慢慢引入到一些稍微重要的功能上,半年时间,学习过程及线上使用遇到的些问题在此总结下. 整理这篇文章差不 ...

最新文章

  1. 深度学习训练,选择P100就对了
  2. 你不知道的事---SringCloud的feign的继承特性
  3. 计算机二级python基础知识总结-计算机二级python 知识点篇(程序的控制结构)...
  4. 基于FPGA的UART接口协议设计
  5. Jlink接口的Jtag和SWD接口定义
  6. for循环,定时器,闭包混合一块的那点事。
  7. 基于visual Studio2013解决面试题之0902内存拷贝
  8. 火星人谚语系列之三:正确的答案一定简单
  9. 卷积神经网络对咖啡病虫害识别和分割(分割+分类,病害严重程度详细)
  10. Vscode 调试:跟踪局部变量的变化
  11. mysql创建的数据库保存在哪里_在MySQL中创建数据库时,我的数据库保存在哪里?...
  12. 5064. 友好城市
  13. pythongui编程星期的中英文对照_编写一个程序,根据用户输入的一个英文字符翻译成相应的中文日期,如输入“M”返回“星期一”。...
  14. 程序员的一天:硅谷女程序员 mayuko
  15. C语言九:位域(位域声明、位域的定义和位域变量的说明、对于位域定义的几点说明:、位域的使用)、typedef(typedef vs #define)、强制类型转换(整数提升、常用的算术转换)
  16. 【毕业设计】 基于单片机的移动共享充电宝设计与实现 - 物联网嵌入式 stm32 c51
  17. 网站页面制作教程[纯萌新]
  18. 【10-11】PR调色+多机位剪辑
  19. 计算机快捷方式后缀名,win10系统去掉“快捷方式”四个字后缀名的操作方案
  20. 时域采样与频域采样实验报告_光时域反射仪(OTDR)如何工作(光电读书)

热门文章

  1. 牛客网(剑指offer) 第十八题 二叉树的镜像
  2. [Python学习] 专题一.函数的基础知识
  3. 某公司有一台打印、复印一体机,需要将购买成本分年均摊到隔年的费用中。请编写一个程序,根据用户输入的购买金额和预计使用年限计算每年的分摊费用。要求对输入异常进行适当的处理。
  4. 带你搞明白什么是缓存穿透、缓存击穿、缓存雪崩
  5. 阿里云centos7安装和卸载图形化操作界面
  6. Linux运行Django项目远程访问时报错:Invalid HTTP_HOST header: '***.***.*.*:8000'.
  7. 征战蓝桥 —— 2016年第七届 —— C/C++A组第8题——四平方和
  8. 2015年第六届蓝桥杯 - 省赛 - C/C++大学A组 - G. 手链样式
  9. 1337:【例3-2】单词查找树
  10. 【Linux】一步一步学Linux——mtools命令(244)