Volatile限定修饰符
===========================================================
当一个对象的值可能会在编译器的控制或检测之外被改变时,例如一个被系统时间更改的变量,那么这个变量就应该声明成volatile。
其主要作用是提示编译器,该对象的值可能在编译器未检测到的情况下被改变。因此编译器执行的某些例行优化行为不能应用在已指定为volatile的对象上。
其用法与const非常相似, 如下:
volatile int display_register; //一个int型的volatile对象volatile Task *curr_task; //一个指向volatile的Task类对象的指针volatile int ixa[ max_size ]; //一个volatile的int型数组。数组中每一个元素都被认为是volatile的volatile Screen bitmap_buf; //一个volatile的Screen类对象,它的每个数据成员都被认为是volatile的
Pair类型
===========================================================
Pair类是标准库的一部分,它可以在单个对象内部把相同类型或不同类型的两个值关联起来。
要使用pair类,必须包含头文件:
#include <utility>
如下代码创建了一个pair对象author,它包含两个字符串,分别被初始化为“James“ 和“Joyce”:
pair<string, string> author( "James", "Joyce" );
我们可以用成员访问符号(member access notation)访问pair中单个元素。它们是first和second。如下:
string firstBook; if(author.first == "James" && author.second == "Joyce")firstBook = "Stephen Hero";
typedef pair< string, string > Authors; Authors proust ( "marcel", "proust" ); Authors joyce ( "james", "joyce" ); Authors musil ( "robert", "musil" );