1.容器与顺序容器

  容器:特定类型对象的集合。

  顺序容器:提供 控制 对集合里的 元素 存储和访问 顺序 (这种顺序与元素加入容器时的位置相对应的能力。

    有:vector,deque,list,front_list,array,string 。

      准确的说是:vector 等是一个类模板,本身不是类,应该先指出将其实例化为何种类型(如:vector<int> ivec),下面为了描述简单,将其默认为已经实例化了的类型。

2.顺序容器之迭代器

  下标运算可以访问stirng和vector对象。迭代器 也可以实现这个目的,但是迭代器更为通用,因为所有的标准库容器都支持迭代器。

  怎么声明:举例:vector<int> :: iterator it;

  怎么使用:类似于指针,提供对对象的间接访问。

  *it, it->mem,++it,--it,it1 = it2, it1 != it2;

  注意:"与指针不同的是,获取迭代器使用的不是取地址符,有迭代器的类型 同时 拥有 返回迭代器的成员"  --《c++primer》

    例如:auto a =  v.begin(); auto b = v.end();

        v 是有某种迭代器的类型(vector,deque,list,front_list,array,string 有迭代器,int, double 等没有迭代器)。

       begin(), end()是该类型的成员(而且这两个成员函数返回迭代器)。使得a和b能够对对象v进行操作。  

       细节:begin() 和 end () 这对迭代器 对对象 v 的界定是 左闭右开区间,即a 指向 v 的最左端元素的位置, b 指向v 的最右端元素的下一个位置。   

3.vector:是什么,能干什么,怎么干的,优缺点

  vector是类模板vector<T>,可实例化为vector<int>等。

  能比array灵活,是可变大小的array。

  定义和初始化(以int 为例,也可以是double ,string等):

    vector <int> a;

    vector <int> b = a; 或 vector <int> b (a)

    vector <int> c = ( n ,i); // 圆括号表示 提供的值是用来构造 vector 对象的,这里表示c 为 n 个 i 的集合。

    vector <int> c = {......}; // 花括号表示 列表初始化,

  支持的操作:v.empty(), v.size(),v.push_back(), v[n],.......

4. C11 新特性之  for(declaration : expression)   statement 

  expression:一个对象,表示一个序列

  declaration :一个变量,访问序列中的基础元素。每次迭代会被初始化为 expression 部分的下一个元素值。

  注意:

   例子1:

string str("some string");  // 输出str中的每个字符
for (auto c : str)cout << c <<endl; 

    得到的输出为:some string

   例子2:

 1 string word;               // 隔行输出str中的每个字符,,键入 asdf g h jkl;
 2
 3 vector<string> str;
 4
 5 while (cin >> word)
 6              str.push_back(word);
 7
 8 for (auto c : str)
 9
10     cout << c <<endl;         

    得到的输出为:

       asdf

       g

       h

       jkl;

  并没有按预期的隔行输出键入的字符串的每个字符,关键在:declaration :一个变量,访问序列中的基础元素。

   例1 中这个expression 为string ,则其基础元素为单个字符。

   例2 中这个expression 为vector<string>,则其基础元素为string(字符串)。

附:

  vector 能容纳大多数类型的对象作为其元素,(但是 引用 不是对象,所以不存在包含引用的vector。)

  除此之外,绝大多数内置类型和类类型都可以构成vector对象、

  vector<vector<int>> a;  // 向量 a 的元素是 vector 对象。

    在使用  vector<vector<int>> a 时3,不能像二位数组那样用a[i][j]对其进行直接赋值,因为他是个二维向量,其里层为一个容纳int 的vector ,先给vector<int> 赋值后,再给 a(即 vector<vector<int>> a) 进行赋值.

  

vector<vector<int>> a;
vector<int> v;for (int i = 0; i<n; i++) { // n 为 向量的维度v.clear(); // 每次都要 clear()for (int j = 0; j < n; j++){cin >> temp;v.push_back(temp);}test.push_back(v);}

转载于:https://www.cnblogs.com/chli/p/7574551.html

顺序容器(1):vector相关推荐

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

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

  2. 【C/C++】顺序容器list和vector

    顺序容器是拥有单一类型元素组成的一个有序集合.主要的顺序容器有vector和list.其实还有deque(双端队列) 1.vector数据结构 使用头文件:#include <vector> ...

  3. C++primer第九章 顺序容器 9.6 容器适配器

    9.6容器适配器 除了顺序容器外,标准库还定义了三个顺序容器适配器:stack.queue和priority_queue 适配器(adaptor)是标准库中的一个通用概念.容器.迭代器和函数<3 ...

  4. C++拾遗(四)——顺序容器

    之前一篇博文(<初窥标准库>)简单了解了一种最常用的顺序容器:vector类型.本文将对该文内容进行进一步的学习和完善,继续讨论标准库提供的顺序容器类型.所谓顺序容器,即将单一类型的元素聚 ...

  5. C++ Primer学习之(9)——顺序容器

    读到了第二部分:容器和算法.这部分我也非常薄弱,简直不敢自称会C++了,好好读读这一部分. P404 顺序容器类型 vector:支持快速随机访问 list:支持快速插入/删除 deque:双端队列 ...

  6. C++知识点17——使用C++标准库(顺序容器vector常用操作)

    C++STL中的容器类型分为两种,一种是顺序容器,另一种是关联容器,这两种容器之所以被划分,本质区别是顺序容器可以通过元素在容器中的位置进行访问及存储,而关联容器只能通过键来访问和存储元素 顺序容器常 ...

  7. c++顺序容器vector用法

    顺序容器概述 一个容器就是一些特定类型的集合.顺序容器为程序员提供了控制元素存储和访问顺序的能力.这种顺序不依赖元素的值,而是与元素加入容器时的位置相对应.所有的顺序容器都提供了快速访问元素的能力.顺 ...

  8. C++ Primer 5th笔记(9)chapter9 顺序容器 vector 容器的自增长 容器适配器

    1. vector 容器的自增长:当插入元素当存储空间不足时,vector 必须重新分配存储空间(比如将新空间大小增加为当前大小的2倍) 管理容量的成员函数 操作 定义 c.shrink_to_fit ...

  9. 获取顺序容器vector,deque,string和array的首尾元素的方法有四个

    获取顺序容器vector,deque,string和array的首尾元素的方法有四个: (1)迭代器 (2)下标 (3)front() 和 back()成员函数 (4)at()成员函数 如下所示,得到 ...

最新文章

  1. signature=dff897e1da6b42a8e9483e18ff19fcde,Vídeo Institucional: Ingresse1
  2. 神经进化:一种不一样的深度学习
  3. qcustomplot删除一条曲线_微凉秋日的成熟风穿搭,选一条V领连衣裙搭配,优雅知性显身材...
  4. sql如何获取全部的索引名称_这句简单的sql,如何加索引?颠覆了我多年的认知...
  5. Apache状态监测集重启
  6. 非对称加密 公钥私钥_选择Java加密算法第3部分–公钥/私钥非对称加密
  7. stm32 内部sram大小_让STM32的外部SRAM操作跟内部SRAM一样
  8. 保驾护航金三银四,含BATJM大厂
  9. 浅谈 HTTPS 和 SSL/TLS 协议的背景与基础
  10. Spring Boot-热部署和Debugger使用(三)
  11. leetcode185 Department Top Three Salaries
  12. html 菜鸟驿站,菜鸟驿站
  13. Ansys DesignModeler
  14. kali无法ping通baidu.com
  15. android微信解析失败,为什么我的手机安装不上微信,一安装就说解析包错误
  16. 苹果5越狱教程_如何进行iOS13.5越狱?iOS13.5越狱方法教程
  17. ios 输入法扩展_iOS 11自带输入法新增3个小功能,贴心!
  18. 向未来再出发,云客荣获金鸥奖2021年度企业服务商
  19. 论强势文化的属性---来自心灵的呼唤
  20. 如何转载博客(转载)

热门文章

  1. [视频]产品营销之拍出好电子产品,Peter Belanger是如何为苹果产品拍照的
  2. js使用showModalDialog,弹出一个自适应大小窗口
  3. Android开发笔记(一)手势识别
  4. 使用jquery简化ajax开发
  5. C# .Net中的类型转换(3)
  6. 洗点,现金1100G
  7. Error:Trailing spaces not allowed no-trailing-spaces
  8. 普通人如何月入10万
  9. 有人问李嘉诚的儿子李泽楷:“你父亲都教了你哪些成功赚钱的秘诀?”
  10. 低学历的人就不能创业了吗?