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,直接使用命名空间中的名字,这样代码可以更加容易阅读。
除了基本的数据类型(例如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/C++日常学习总结(第五篇)多态和虚函数的访问
- C++学习总结系列--拷贝构造函数
- 【C++学习】类初始化列表的分析总结
- Halcon PDF文档(hdevelop_users_guide)学习总结之六——Halcon如何导出C++代码
- C++学习总结
- C++学习总结 写C++程序时的注意事项
- imooc 学习总结——离港篇:C++之const关键字
- C_C++的union的学习笔记总结
- C和C++语言学习总结(资料来自<高质量C++/C 编程指南> 林锐博士 2001 年7 月24)
- C/C++指针错误与调试相关学习总结
- C/C++日常学习总结(第十七篇)#define XNAME(n) x##n
- 黑马程序员学习log第五篇基础知识:JAVA的面向对象之集合总结
- C/C++日常学习总结(第七篇)常引用&指针的理解
- 跟我一起学习C++虚函数--第五篇
- 总结了一些学习c++的网址
- C/C++ 日常学习总结(第十八篇)参数个数可变的函数
- c++学习总结(一)---函数
- [C++再学习系列] STL容器删除操作总结
- C/C++的一学习总结
- C++学习总结