您的位置:首页 > 编程语言 > C语言/C++

c++学习总结(第五篇)

2014-04-16 19:52 260 查看
1、标准库类型

除了基本的数据类型(例如int,float等)之外,c++还定义了一个内容丰富的抽象数据类型标准库。其中最重要的标准库类型是string和vector,它们分别定义了大小可变的字符串和集合。string和vector往往将迭代器用作配套类型,用于访问string中的字符或者vector中的元素。这些标准库类型是语言组成部分中更基本的那些数据类型(如数组和指针)的抽象。之所以说这些标准库类型是更高级的,是因为其中反映了更复杂的概念;之所以说它们是抽象的,是因为我们在使用时候不需要关心它们是如何表示的,只需知道这些抽象数据类型支持哪些操作就可以了。

2、命名空间的using声明

之前一些程序内容,都是通过直接说明名字来自std命名空间,来引用标准库中的名字。例如,从标准输入读取数据时候,就用std::cin,这些名字都用了::操作符,该操作符是作用域操作符,它的含义是右操作数的名字可以在左操作数的作用域中找到。因此std::cin的意思是说所需要名字cin是在命名空间std中定义的。

通过这种符号引用标准库名字的方式非常麻烦,好在c++提供了更简洁的方式来使用命名空间成员,下面介绍一种最安全的机制:using 声明

使用using声明可以在不需要加前缀namespace_name::的情况下访问命名空间中的名字,using声明的形式如下,

using namespace::name;

一旦使用了using声明,我们就可以直接引用名字,而不需要再引用该名字的命名空间,示例代码如下,

#include <string>

#include <iostream>

//使用using声明std命名空间中的名字

using std::din;

using std::string;

int main()

{

string s;//正确

cin>>s;//正确

cout<<s;//错误,没有使用using声明std::cout

std::cout<<s;//正确

return 0;

}

没有using声明,而直接使用命名空间中名字的未限定版本是错误的,尽管有些编译器也许无法检测出这种错误。

3、每个名字都需要一个using声明

一个using声明一次只能作用域一个命名空间成员。using声明可用来明确指定在程序中用到的命名空间的名字,如果希望使用std(或其他的命名空间)中的几个名字,则必须为要用到的每个名字都提供一个using声明。下面是代码示例,

#include <iostream>

//使用using声明来自于标准库命名空间的名字

using std::din;

using std::cout;

using std::endl;

int main()

{

cout<<"Enter two numbers:"<<endl;

int value1,value2;

cin>>value1>>value2;

cout<<""<<value1

<<"and"<<value2

<<"is"<<value1+value2<<endl;

return 0;

}

对cin、cout和endl进行using声明,就意味着以后可以省略前缀stdLL,直接使用命名空间中的名字,这样代码可以更加容易阅读。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c++ 从零开始