C++ Primer第三章①
C++ Primer
第三章 字符串、向量和数组
前言:除了第二章介绍的内置类型之外,C++语言还定义了一个内容丰富的抽象数据类型库。这一章我们主要介绍其中的两种string和vector(相信我,你们以后会经常用到的),string支持可变长字符串(注意,是可变长的),后者则表示可变长的集合(可以把vector看成是一个容器)。还会介绍一种标准库类型是迭代器,它是string和vector的配套类型,用于访问string中的字符或vector中的元素。
第二章介绍的内置类型是由C++语言直接定义的。这些类型体现了大多数计算机硬件本身具备的能力。标准库定义了另外一组更具有高级性质的类型,如string,vector等,它们尚未直接实现到计算机硬件中。
在开始介绍标准库类型之前,先来学习一下一种访问库中名字的简单方法。
命名空间的using声明
目前为止,我们用到的库函数基本都属于命名空间std
#include <iostream>
int main()
{
int a = 0;
std::cin >> a;
}
比如上面代码,你要想用cin表示输入,就要写成std::cin,因为cin是在命名空间std中的,要是写多个输入就很烦,于是,C++设计者又有偷懒方法
#include <iostream>
using std::cin;
int main()
{
int a = 0;
cin >> a;
}
那如果我们要用cout,endl等,也得using std::cout这样,那有没有更偷懒的方法呢?有的,像下面这样就行,不过不推荐这么做,虽然我一直这么干
using namespace std; //这样就可以访问std中所有的名字,但是很多用不到,
//可能程序开销会变大
头文件不应包含using声明
我们用头文件一般是自定义数据类型吧(有待讨论) 因为头文件的内容在编译时会被拷贝到所有引用它的文件中去,如果头文件中有某个using声明,那么每个使用了该头文件的文件就都会有这个声明,很有可能产生一些冲突。
为了让后面的代码简洁,也为了我好偷懒,后面将不会再把所有using声明和#include指令一一标出,你要想跑代码,就自己加一下。