C++ 学习基础一
1.预处理器指示符
如果文件名用尖括号“<”和”>”括起来的,则表示该文件是工程或标准头文件,查找过程会检查预定义的目录。
如果文件名用双引号括起来,则表示该文件是用户自定义的头文件,查找该文件时将从当前文件目录开始。
2.注释块不能嵌套,即如下情况是不允许的
/*
* do not allow /**/
*/
3.文件结束符,mac上使用Ctrl + D;windows上使用Ctrl + Z;
—————-2016-07-12———————
4.string对象的输入操作符,
(1).读取并忽略开头的空白字符(如空格,换行符,制表符)
(2).读取字符直至再次遇到空白字符,读取终止.
5.用getline读取整行文本,getline返回的字符串不包含换行符
6.vector——高效的动态的添加元素
(1) 定义和初始化
vector<T> v1;//v1默认为空
vector<T> v2(v1);//v2是v1的副本
vector<T> v3(n,i);//v3包含n个值为i的元素
vector<T> v4(n);//v4含有值初始化的元素的n个副本
(2)常用操作
v.empty();//判断v是否为空
v.size();//返回v中元素个数,返回值类型为size_type
v.push_back(t);//在v的末尾添加一个值为t的元素
v[n];//返回v中位置为n的元素,下标操作不允许添加元素,只能获取指定元素
7.迭代器用于访问容器内的元素,每个容器都定义了一个名为iterator的类型。
迭代器的简单使用:
std::vector<int>::iterator iter;
for(iter = ivec.begin();iter!=ivec.end();iter++)
{
cout<<*iter<<endl;
}
还可以通过迭代器改变vector中元素的值,具体如下:
std::vector<int>::iterator iter;
for(iter = ivec.begin();iter!=ivec.end();iter++)
{
*iter = 0;
cout<<*iter<<endl;
}
除了iterator类型外,还有一种const_iterator类型,该类型的迭代器只能访问vector内的元素,不能更改其元素的值。
std::vector<int>::const_iterator citer;
for(citer = ivec.begin();citer!= ivec.end();citer++)
{
cout<<"dasfjsdfj "<<*citer<<endl;
}
8.数组
(1)非const常量以及要到运行阶段才知道其值的const常量都不能用于定义
数组的维数。如:
const int value = 3;
int ss_size = 30;
const int bb_size = getsize();
double a[ss_size];//error
int b[value];//ok
int c[bb_size];//error
(2)一个数组不允许使用另外一个数组初始化,也不允许将一个数组赋值给另一个数组,
如下:
int ia[] = {0,1,2};
int ia2[](ia);//error
int ia3[3];//ok ,but elements are uninitialized!
ia3 = ia;//error
(3)动态数组是只通过new 和delete分配存储空间,例如:
int *pia = new int[10];//ok,but uninitialed
int *pia2 = new int[10]();//ok,initialed
(4)数组变量不允许创建空数组,而动态数组可以。如下:
char array[0];//error,cannot define zero length array
char *cp = new char[0];//ok,但是不能对该指针进行解引用
(5)动态分配的数组最后必须显示地释放,否则最后将会逐渐耗尽。C++中使用delete[]释放指针所指向的数组空间。
delete []pia;
(6)动态数组的使用:
通常是因为在编译时无法确定数组维数,所以使用动态创建该数组。
后续更新中......
C++ 学习基础一的更多相关文章
- 现代3D图形编程学习-基础简介(2) (译)
本书系列 现代3D图形编程学习 基础简介(2) 图形和渲染 接下去的内容对渲染的过程进行粗略介绍.遇到的部分内容不是很明白也没有关系,在接下去的章节中,会被具体阐述. 你在电脑屏幕上看到的任何东西,包 ...
- 现代3D图形编程学习-基础简介(1) (译)
本书系列 现代3D图形编程学习 基础简介 并不像本书的其他章节,这章内容没有相关的源代码或是项目.本章,我们将讨论向量,图形渲染理论,以及OpenGL. 向量 在阅读这本书的时候,你需要熟悉代数和几何 ...
- JavaScript学习基础部分
JavaScript学习基础 一.简介 1.JavaScript 是因特网上最流行的脚本语言,并且可在所有主要的浏览器中运行,比方说 Internet Explorer. Mozilla.Firefo ...
- 【IOS学习基础】NSObject.h学习
一.<NSObject>协议和代理模式 1.在NSObject.h头文件中,我们可以看到 // NSObject类是默认遵守<NSObject>协议的 @interface N ...
- git学习基础教程
分享一个git学习基础教程 http://pan.baidu.com/s/1o6ugkGE 具体在网盘里面的内容..需要的学习可以直接下.
- c语言学习基础:[1]开发工具介绍
标签:c语言 1 2 3 4 分步阅读 学习编程语言的童鞋们一开始接触到的最多的估计就是C语言了,其次才是什么java.c++等,可以说学习c语言是我们走向编程世界的一座桥梁,学好它,对于我们学习和研 ...
- 20165318 预备作业二 学习基础和C语言基础调查
20165318 学习基础和C语言基础调查 技能学习经验 我们这一代人,或多或少的都上过各种兴趣班,舞蹈钢琴画画书法,我也是如此.可这些技能中,唯一能拿的出手的就是舞蹈了.按照<优秀的教学方法- ...
- 20165230 学习基础和C语言基础调查
20165230 学习基础和C语言基础调查 技能学习经验 我擅长弹钢琴.小时候我曾上过很多兴趣班,比如钢琴.跳舞.书法.绘画等等,唯一坚持至今的只有钢琴.仔细一算学习钢琴至今已有12年,不能说已经精通 ...
- [ Java学习基础 ] Java构造函数
构造方法是类中特殊方法,用来初始化类的实例变量,它在创建对象(new运算符)之后自动调用. Java构造方法的特点如下: 构造方法名必须与类名相同. 构造方法没有任何返回值,包括void. 构造方法只 ...
- [ Java学习基础 ] Java的继承与多态
看到自己写的东西(4.22的随笔[ Java学习基础 ] Java构造函数)第一次达到阅读100+的成就还是挺欣慰的,感谢大家的支持!希望以后能继续和大家共同学习,共同努力,一起进步!共勉! ---- ...
随机推荐
- 《挑战程序设计竞赛》 4.1.1 矩阵 P286
想写几篇挑战的感悟,也有助于自己理解这本书.但这上面大多贴的是书上的代码,主要是为了用的时候后直接复制就好了,这样就很方便了,就相当于黑盒模板了. 1.线性方程组 /** \brief 高斯消元法 * ...
- HttpClient和HttpURLConnection整合汇总对比
性能 1.HttpUrlConnection直接支持GZIP压缩:HttpClient也支持,但要自己写代码处理. 2.HttpUrlConnection直接支持系统级连接池,即打开的连接不会直接关闭 ...
- 转--简单工厂模式 Simple Factory
简单工厂模式的作用就是定义一个用于创建对象的接口 在简单工厂模式中,一个工厂类处于对产品类实例化调用的中心位置上,它决定那一个产品类应当被实例化. 先来看看它的组成: 1) 工厂类角色 ...
- 转载__Java内部类
内部类是指在一个外部类的内部再定义一个类.内部类作为外部类的一个成员,并且依附于外部类而存在的.内部类可为静态,可用protected和private修饰(而外部类只能使用public和缺省的包访问权 ...
- Double-checked locking and the Singleton pattern--双重检查加锁失效原因剖析
以下内容摘取自http://stackoverflow.com/questions/11195389/out-of-order-writes-for-double-checked-locking Th ...
- MySQL的时间进位问题
mysql更新到5.6.4 之后 , 新增了一个叫factional seconds的特性 , 可以记录时间的毫秒值. 但是目前的数据库是不记录毫秒值的 , 所以会产生一个java中时间的Millis ...
- $.extend()和$.fn.extend()用法和区别
$.extend()和$.fn.extend()用法和区别: 在自己制作插件的时候会经常用到$.extend()和$.fn.extend()两个函数,无论从外观还是作用都非常的类似,但是实际上它们的区 ...
- 通过IP连接网上打印机(转载)
From:http://zhidao.baidu.com/link?url=YZzFWur4-UZrNEobHv9zTkbYocMAjKkCq0LBj1QjJ6wApUT7MljxoD8JMBREUH ...
- Java多线程之线程结束清理
该事例说明了清理工作必须要放在finally块中 package Thread.Interrupting; import java.util.concurrent.TimeUnit; class Ne ...
- ruby-rails 环境搭建
https://ruby-china.org/wiki/install_ruby_guide