essential c++ 第一章 array及vector相关使用
将对象初始化:
1.用等号(=)赋值运算符初始化,针对对象是内置类型或者对象可以单一值初始化
2.构造函数初始化,针对对象需要多个初始值的情况
单括号括住的字符表示字符常量(‘ ’);
第一个反斜线表示转义字符的起头字符(\);
除法(/):小数点的部分被完全舍弃,不存在四舍五入;
取余(%):取得除法运算的余数部分;
条件运算符:expr ? : ;如果表达式为真(expression的值不为0),执行问号后面部分,若表达式为假(求值为0),则执行冒号后面部分;
continue:终止当前执行的这一次循环;
数组array:须定义数组元素的个数,且只能为常数值,若未定义数组元素个数,则在初始化时,根据初始值的数量,默认添加该值,定义之后的空间是固定的。
数组的索引([ ])是从下标0开始,集体初始化包括在大括号内,数组初始化列表中的元素个数小于指定的数组长度时,不足的元素补以默认值;
错过了初始化时机,即想在数组创建结束后再对其进行初始化,
1.可以使用C函数的memset(),其中memset()函数原型是 extern void*memset(void *buffer,int c,int coount) buffer: 为指针或数组 c:是赋给buffer的值 count:是buffer的长度 ,这个函数用来对一段内存空间全部设置为某个字符,或者是对 定义的字符串进行初始化为 ‘ ’ 或 '\0'; eg: char a[100]; memset(a , '\0' , sizeof ( a ) ); 但是存在一个问题,memset只对char类型的数组管用,将a数组换成int或其他类型的,就会出现问题,因为memset的内部实现是以字节为单位进行赋值的,int类型大于一个字节(假设是4个),数组内存连续,如果有下面代码: int a[10]; memset(a,1,sizeof(a)); 将只会对前sizeof(a)即40个字节进行赋值1的操作。
2.想初始化的话,只能用循环赋值
注意:不能用数组直接初始化另一个数组,也不能将一个数组直接赋值给另一个数组,原因是C++中的数组事实上是不可变指针(const*),若想要用一个数组初始化另一个数组,有两种方法:
1:通过数组遍历,逐个赋值:for(i=o;i<4:i++) b[i]=a[i];
2:借助内存复制函数memcpy,整体赋值:原型为void* memcpy(void *dst,void*src,size_t size) 功能是将src上,大小为size字节的数据赋值到dst上; 使用时要包含头文件#include<cstring> memcpy(b,a,sizeof(a));
容器vector:使用时必须包含头文件#include<vector>,
vector是可以存放任意类型的动态数组,并且可以动态改变大小,可以把容器对象直接赋值给另一个对象
用数组对vector进行初始化:可以将vector初始化为一个已有数组的全部或一部分,只需指定希望被用来初始化vector的数组的开头地址及数组最末尾的下一个位置,vector的索引下标和array一样,也是从0开始
以上是一些常用的vector操作,对于容器,使用迭代器操作容器中对应位置的值,当迭代器指向了容器中的某位置,可以用*加迭代器操作该位置的值。 其中,迭代器:提供了对顺序或关联容器类型中的每个元素进行连续访问的方法,每个对象都有一个,即容器与迭代器之间相互绑定,迭代器是指针的泛化,它允许程序员以相同的方式处理不同的数据结构(容器),与算法不干扰地相互发展。每个迭代器都提供一个begin()(返回指向容器的第一个元素)和end()(返回指向容器的末元素的下一个位置)成员函数,迭代器重载了*,++,==,!=,=运算符,关于迭代器的功能和类别参考博客https://blog.csdn.net/qq_23100787/article/details/51388163
注意:对于vector,若直接定义,尚未初始化,则不能直接使用下标,下标索引只能索引vector中已存在的元素,#include<vector> vector<int>ivec;//此处并未初始化,这句话是初始化了一个size为0的vector, ivec[0]=1024;//直接这么写是错误的,只能索引vector中已存在的元素 ,在此给出vector初始化及赋值的几种方式,参见https://blog.csdn.net/yjunyu/article/details/77728410?locationNum=10&fps=1
essential c++ 第一章 array及vector相关使用的更多相关文章
- [翻译] C++ STL容器参考手册(第一章 <array>)
返回总册 本章节原文:http://www.cplusplus.com/reference/array/array/ 1. std::array (C++11支持) template < cla ...
- #《Essential C++》读书笔记# 第一章 C++ 编程基础
前言 Stanley B.Lippman 先生所著的<C++ Primer>是学习C++的一本非常优秀的教科书,但<C++ Primer>作为一本大部头书,显然不适合所有的初学 ...
- Ionic 入门与实战之第一章:Ionic 介绍与相关学习资源
原文发表于我的技术博客 本文是「Ionic 入门与实战」系列连载的第一章,主要对 Ionic 的概念.发展历程.适配的移动平台等知识进行了介绍,并分享了 Ionic 相关的学习资源. 原文发表于我的技 ...
- 算法<初级> - 第一章 排序相关问题
算法 - 第一章 时间复杂度: Big O 时间/空间复杂度计算一样,都是跟输入数据源的大小有关 n->∞ O(logn) 每次只使用数据源的一半,logn同理 最优解 先满足时间复杂度的情况最 ...
- 第一章 C++编程基础
第一章 C++编程基础 1.1 如何撰写C++程序 赋值 assignment复合赋值 (compound assignment) += 函数(function)是一块独立的程序代码序列(code s ...
- PRML读书会第一章 Introduction(机器学习基本概念、学习理论、模型选择、维灾等)
主讲人 常象宇 大家好,我是likrain,本来我和网神说的是我可以作为机动,大家不想讲哪里我可以试试,结果大家不想讲第一章.估计都是大神觉得第一章比较简单,所以就由我来吧.我的背景是统计与数学,稍懂 ...
- Solidity 中文文档 —— 第一章:Introduction to Smart Contracts
第一章:智能合约简介 粗略地翻译了 Ethereum 的智能合约开发语言的文档:Solidity.欢迎转载,注明出处. 有任何问题请联系我,本人微信:wx1076869692,更多详情见文末. 我是 ...
- Day1 《机器学习》第一章学习笔记
<机器学习>这本书算是很好的一本了解机器学习知识的一本入门书籍吧,是南京大学周志华老师所著的鸿篇大作,很早就听闻周老师大名了,算是国内机器学习领域少数的大牛了吧,刚好研究生做这个方向相关的 ...
- [OpenGL红宝书]第一章 OpenGL概述
第一章 OpenGL概述 标签(空格分隔): OpenGL 第一章 OpenGL概述 1 什么是OpenGL 2 初识OpenGL程序 3 OpenGL语法 4 OpenGL渲染管线 41 准备向Op ...
随机推荐
- win 2012 安装mysql 5.7.20 及报错 This application requires Visual Studio 2013 Redistributable. Please install the Redistributable then run this installer again 的解决办法
本文地址:http://www.cnblogs.com/jying/p/7764147.html 转载请注明出处. 安装过程其实挺简单,基本上下一步下一步,可以参考我的另一篇mysql安装文章: ...
- centos下SVN搭建多个库文件总汇
1.checkout时,提示:URL svn://192.168.1.99/svntest doesn't exist...奇怪,怎么会提示库不存在呢?肯定是哪里配置问题.后来尝试了半天,也在网上搜索 ...
- DBCC维护语句语法
一.DBCC维护语句:对数据库.索引或文件组进行维护的任务--1.DBCC CLEANTABLE,回收删除的可变长度列和文本列的空间 DBCC CLEANTABLE ( { 'database_na ...
- iphone上实现H264 硬编码
供ios下h264硬编码sdk,可以生成h264流. 我们的H264 SDK提供了一个理想的软件开发工具包,使您的app可以在iPhone或iPod上实时的访问H264帧数据.SDK提供了一套API功 ...
- fengsuo
IP地址特定端口封锁 原理: 配合上文中特定IP地址封锁里路由扩散技术封锁的方法进一步精确到端口,从而使发往特定IP地址上特定端口的数据包全部被丢弃而达到封锁目的,使该IP地址上服务器的部分功能无法在 ...
- 详解MySQL数据表类型
学习Mysql数据库,Mysql表类型都有哪些是一定需要知道的,下面就为您介绍七种Mysql表类型,希望能对您学习Mysql表类型有所帮助. MySQL作为当前最为流行的免费数据库服务引擎,已经风靡了 ...
- mysql 和 Oracle 数据类型对照
MySQL与Oracle两种数据库在工作中,都是用的比较多的数据库,由于MySQL与Oracle在数据类型上有部分差异,在我们迁移数据库时,会遇上一定的麻烦,下面介绍MySQL与Oracle数据库数据 ...
- python全栈 字典数据类型相关知识及操作
python 全栈开发 一.字典 1. 字典的概念: 字典 : dict 用 {} 来表示, 键位值数据. { key , value } 具有唯一性. 键:都必须是可哈希的 不可变 ...
- python--第六天总结
执行系统命令 可以执行shell命令的相关模块和函数有: os.system os.spawn* os.popen* --废弃 popen2.* --废弃 co ...
- php递归获取目录下所有文件
<?php function getFileList($dir){ $dir=iconv("utf-8","gb2312",$dir); if ($hea ...