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 ...
随机推荐
- effective C++学习一(仅供个人学习记录,本文摘录effective C++)
条款 1:尽量用 const 和 inline 而不用#define #define ASPECT_RATIO 1.653 编译器会永远也看不到 ASPECT_RATIO 这个符号名,因为在源码进 ...
- C#关键字as出现的错误
ObjectCache cache = MemoryCache.Default; string cacheData1 = cache["key1"] as string;//得不到 ...
- MySQL C#连接ySQL保存当前时间,时分秒都是0,只有日期
原因:MySQL的字段格式是:date 解决: 1.把 字段格式 改为 datetime 2.映射 的字段类型 也要改为 datetime
- linux 设备驱动分类
1. 字符设备 :在I/O传输过程中以字符为单位. 2. 块设备: 在传输过程中以块为单位,相关概念有 缓冲,I/O调度,请求队列.主要体现出与字符设备在操作硬件的接口实现方式上是不一样的. 3. 网 ...
- pip 离线安装
pip download ansible -d . --trusted-host mirrors.aliyun.com pip install ansible-2.7.5.tar.gz --user ...
- webstocket 聊天
/** * 初始化socket **/ function initSocket(index_host){//端口号 if( !window.WebSocket ){ console.log(" ...
- 第三篇:jmeter的作用域和执行顺序
1.元件的作用域: 8类可执行的元件,testplan和threadgroup不属于可执行的元件:这些元件中,取样器,是典型的不与其他元件发生交互作用的元件,逻辑控制器只对其子节点的取样器有效,而其他 ...
- scrapy 琐碎的东西
1.深度指定 DEPTH_LIMIT=1 2.常用命令 scrapy startproject name scrapy genspider name name.com scrapy crawl nam ...
- pytest 学习笔记一:参数化与组织分层
组织分层: 1.普通方式,和unittest分层类似: setup_module() # 通常放在类外 setup_class(cls) setup(self) teardown(self) tea ...
- background和background-color的区别
在设置输入框变成一条线的样式时遇到一个小问题. 无论怎么设置 输入框的背景都没有变 而设置background: #aaa;背景就改变了. 后来发现原因 background 可以设置 背景颜色.背景 ...