C++学习笔记之一
2014-03-02 21:17 WangSeaQuan 阅读(239) 评论(0) 收藏 举报C++11和C++98相比,改动很大,最近买了本C++ Primer第五版,觉得有必要好好的重新学学C++。
1.写控制台程序,窗口显示会一闪而过,有两种方法解决:一种方法就是用system("pause"),这是控制台程序调用系统的pause命令,而pause系统命令的功能很简单,就是在命令行输出“按任意键继续...”,等待用户按一个键,然后返回。另一种方法就是使用cin.get(),但是在使用cin.get()要注意一点的就是get()会直接从输入流中读取字符,如果之前有使用cin,则输入流中剩下的字符(包括空字符)都会被get()接收,这样便达不到窗口停顿的目的。这里我们可以先用cin.clear()清除输入流的错误状态(防止有),再用cin.sync()来清空输入流中的内容,见下面代码。
2.C++11提供了新类型auto、decltype和constexpr,感觉这些类型的提出都是从在编译阶段对程序进行优化,提高程序的运行效率,可惜对于constexpr,VS2013并不支持。
3.C++在数组中增加了函数begin和end函数,这样数组和vector的距离就更近了,值得注意的是这两个函数是定义在<iterator>头文件中。
4.数组名一般都是同时作为数组首元素的地址,如定义一个数组ia,那么auto p(ia)中p的类型是一个指针,指向数组的首元素,但是对于decltype(ia) ib来说,ib是一个含有与ia相同数量元素的数组。
#include <iostream>
#include <iterator>
#include <cctype>
using std::cout; using std::cin; using std::endl;
using std::begin; using std::end;
int main()
{
// 数组的维度num必须为常量表达式,由于VS不支持constexpr,只能用const
const size_t num = 5;
int ia[num] = { 1, 2, 3, 4, 5 };
int *beg = begin(ia), *last = end(ia);
while (beg != last)
{
cout << *beg << " ";
++beg;
}
cout << endl;
unsigned n;
cin >> n;
while (n--)
{
cout << "Visual Image" << " ";
}
cin.clear(); cin.sync(); cin.get(); // system("pause")
return 0;
}
浙公网安备 33010602011771号