顺序容器的访问元素的成员函数(front,back,下标和at)返回的都是引用,如果顺序容器是const的对象,那么返回的是const的引用,下面有个例子说明问题:

#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 pluralize(size_t ,string &);
void print(list<string> &);
void print(vector<string> &);
int main()
{const vector<int> v_int{1,2,3,4,5,6,7,8,9};//这里v_int是const的vectorint & a = v_int[1]; //这里是错误的。不能把const引用赋值给普通引用deque<int> d_int{1,2,3,4,5};list<int> l_int{1,2,3,4,5};forward_list<int> f_int{1,2,3,4,5};array<int,10> a_int{1,2,3,4,5,6};string str{"abcdefg"};cout << "v_int is:"<< v_int.front() << endl;cout << "v_int.front is:" ;cout << v_int.front() << endl; cout << v_int.back() << endl;cout << d_int.front() << endl; cout << d_int.back() << endl;cout << l_int.front() << endl; cout << l_int.back() << endl;cout << f_int.front() << endl; cout << a_int.front() << endl; cout << a_int.back() << endl;cout << str.front() << endl;   cout << str.back() << endl;d_int.at(1) = 1025;cout << v_int[1] << endl;cout << d_int[1] << endl;cout << a_int[1] << endl;cout << str[1] << endl;cout << "at function :" << endl;cout << v_int.at(0) << endl;cout << d_int.at(1) << endl;cout << a_int.at(1) << endl;cout << str.at(1) << endl; 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 pluralize(size_t cnt,string &word)
{if(cnt > 1)word.push_back('s');//equal to word += 's'
}void print(vector<string> & s_vec)
{for(auto &i :s_vec)cout << i << " ";cout << endl;
}
void print(list<string> & s_list)
{for(auto & i: s_list)cout << i << " ";cout << endl;
}

v_int是const对象,所以v_int[1]也是const引用的。所以不能赋值给普通的引用。

容器的访问元素的成员函数(front,back,下标和at)返回的都是引用,如果顺序容器是const的对象,那么返回的是const的引用相关推荐

  1. 容器的访问元素的成员函数(front,back,下标和at)返回的都是引用

    容器的访问元素的成员函数(front,back,下标和at)返回的都是引用,如果我们用auto变量去改变保存这些函数的返回值,并且希望通过使用此变量来改变元素的值,那么必须记得将变量定义为引用 #in ...

  2. leetcode中使用c++需要注意的点以及各类容器的初始化、常用成员函数

    目录 1.传引用 2.vector使用 初始化方法 常用成员函数 3.字符串string 初始化方法 常用成员函数 4.哈希表 unordered_map 初始化 常用成员函数 示例:计数器 5.哈希 ...

  3. 类与对象:类的6个默认成员函数: 构造函数、析构函数、拷贝构造函数、赋值操作符重载、默认拷贝构造与赋值运算符重载的问题、const成员函数、 取地址及const取地址操作符重载

    1.类的6个默认成员函数 如果一个类中什么成员都没有,简称为空类.任何一个类在我们不写的情况下,都会自动生成下面6个默认成员函数. 构造函数 析构函数 拷贝构造函数 赋值操作符重载 const成员函数 ...

  4. java设计一个顺序表类的成员函数,用java编写一个逐个输出顺序表中所有数据元素的成员函数...

    import java.util.ArrayList; import java.util.List; public class Test { /** * @param args */ public s ...

  5. C++ Primer 第九章 顺序容器

    由于书籍上写的已经很经典了,故大部分用图片的形式来阐述概念,代码纯手打进行验证. 1.顺序容器类型:vector.deque.list.forword_list.array.string. 2.顺序容 ...

  6. C++ Primer 第9章 顺序容器 第一次学习笔记

    1. 顺序容器概述 #include <vector> //可变大小数组.支持快速随机访问.在尾部之外的位置插入或删除元素可能很慢 #include <deque> //双端队 ...

  7. 顺序容器(vector、list、string、deque、forward_list)及迭代器、容器适配器

    文章目录 概述 所有容器都支持的操作 迭代器 迭代器支持的操作 迭代器支持的算术运算 容器类型 size_type iterator 和 const_iterator 容器定义和初始化 拷贝初始化 顺 ...

  8. 《C++ Primer 5th》笔记(9 / 19):顺序容器

    文章目录 顺序容器概述 确定使用哪种顺序容器 容器库概览 迭代器 迭代器范围 使用左闭合范围蕴含的编程假定 容器类型成员 begin和end成员 容器定义和初始化 将一个容器初始化为另一个容器的拷贝 ...

  9. C++primer第九章 顺序容器 9.3 顺序容器操作

    9.3顺序容器操作 顺序容器和关联容器的不同之处在于两者组织元素的方式.这些不同之处直接关系到了元素如何存储.访问.添加以及删除.上一节介绍了所有容器都支持的操作(罗列于表9.2(第295页)).本章 ...

最新文章

  1. 修改mysql数据库默认编码为utf8
  2. USB学习笔记连载(八):FX2替换到FX2LP需要注意事项
  3. 【坐在马桶上看算法】算法10:二叉树
  4. 读书笔记:季羡林关于如何做研究学问的心得
  5. 新型冠状病毒肺炎国内分省分日期从1.16起的全部数据爬取与整理代码(附下载)
  6. python爬虫:爬取某网站视频
  7. Markdown 编辑器 Editor.md 预览
  8. 基于python的数字印刷体识别_利用卷积神经网络识别印刷体中文
  9. ADODB.Stream
  10. PuTTYgen 使用
  11. 转载十年 - 武汉公交杂记
  12. requests 使用 socks5 协议 的另外一种方式
  13. oracle中分组函数取百分比,Oracle之组函数、分组统计-Oracle
  14. ReentrantLock使用及其原理解析
  15. HTML px em pt长度单位(像素 相对长度 点)
  16. 加油站问题的题解与分析——循环队列+合并
  17. Django 使用QSL server数据库
  18. 数智化浪潮中,IT部门如何实现变革?
  19. Matlab/simulink 风储调频,风电调频,模糊控制,mpc模型预测,虚拟惯性控制,下垂控制。
  20. 魔趣-nexus源码编译

热门文章

  1. 技术贴:asp.net实现唯一账户在线 禁止同一帐号同时在线 asp.net实现您的帐号在别处登录,您已被迫下线!...
  2. 牛客网(剑指offer) 第十七题 树的子结构
  3. linux vim五则运算编程,第3章--vi-vim编辑器的使用.ppt
  4. [网络安全自学篇] 十一.虚拟机VMware+Kali安装入门及Sqlmap普及
  5. 【python数据挖掘课程】二十三.时间序列金融数据预测及Pandas库详解
  6. iOS基础知识(面试必备)
  7. 2019第十届蓝桥杯C/C++ A组省赛 —— 第一题:平方和
  8. 【MFC】带进度条的状态栏
  9. 【STM32】外部中断
  10. 【Tools】MarkDown教程(三)-MarkDown表格和公式