C++字典

bm56 贡献于2016-02-03

作者 user  创建于2011-04-27 11:12:00   修改者junhuizx  修改于2012-05-23 02:08:00字数20943

文档摘要: 默认构造函数s1为空串strings(cp);定义一个新的string对象,用cp所指向的(以空字符null结束的)C风格字符串初始化该对象strings2(s1);将s2初始化为s1的一个副本strings3(“value”);将s3初始化为一个字符串字面值副本strings4(n,‘c’);将s4初始化为字符’c’的n个副本is>>s;从输入流is中读取一个以空白字符分隔的字符串,写入sos<<s;将s写到输出流os中getline(is,s)从输入流is中读取一行字符,写入sstrings(cp,n)
关键词:

C++算术类型 类型 含义 最小存储空间 bool boolean NA char character 8 bits whcar_t wide character 16 bits short short integer 16 bits int integer 16 bits long long integer 32 bits float single-precision floating-point 6 significant digits double double-precision floating-point 10 significant digits long double extended-precision floating-point 10 significant digits C++关键字 asm do if return try auto double inline short typedef bool dynamic_cast int signed typeid break else long sizeof typename case enum mutable static union catch explicit namespace static_cast unsigned char export new struct using class extern operator switch virtual const false private template void const_cast float protected this volatile continue for public throw wchar_t default friend register true while delete goto reinterpret_cast C++操作符替代名 and bitand compl not_eq or_eq xor_eq and_eq bitor not or xor 几种初始化string对象的方式 string s1; 默认构造函数s1为空串 string s(cp); 定义一个新的string对象,用cp所指向的(以空字符null结束的)C风格字符串初始化该对象 string s2(s1); 将s2初始化为s1的一个副本 string s3(“value”); 将s3初始化为一个字符串字面值副本 string s4(n, ‘c’); 将s4初始化为字符’c’的n个副本 is>>s; 从输入流is中读取一个以空白字符分隔的字符串,写入s os<s2.size(),则该操作未定义,无论len2的值是多少,最多只能复制s2.size()-pos2个字符 string对象的操作 s.empty() 如果s为空串,则返回true,否则返回false s.size() 返回s中字符的个数 s[n] 返回s中位置为n的字符,位置从0开始计数 s1+s2 把s1和s2连接成一个新字符串,返回新生成的字符串 s1=s2 把s1内容替换为s2的副本 v1==v2 比较v1与v2的内容,相等则返回true,否则返回false !=, <, <=, >, >= 保持这些操作符惯有的含义 与容器共有的string操作 s.insert(p, t) 在迭代器p指向的元素之前插入一个值为t的新元素。返回指向新插入元素的迭代器 s.insert(p, n, t) 在迭代器p指向的元素之前插入n个值为t的新元素。返回void s.insert(p, b, e) 在迭代器p指向的元素之前插入迭代器b和e标记范围内所有元素。返回void s.assign(b, e) 在迭代器b和e标记的范围内的元素替换为s。对于string类型,该操作返回s;对于容器类型,则返回void s,assign(n, t) 用值为t的n个副本替换s。对于string类型,该操作返回s;对于容器类型,则返回void s.erase(p) 删除迭代器p指向的元素。返回一个迭代器,指向被删除元素后面的元素 s.erase(b, e) 删除迭代器b和e标记范围内所有的元素。返回一个迭代器,指向被删除元素段后面的第一个元素 string类型区别于容器特有的操作 s.insert(pos, n, c) 在下标为pos的元素之前插入n个字符c s.insert(pos, s2) 在下标为pos的元素之前插入string对象s2的副本 s.insert(pos, s2, pos2, len) 在下标为pos的元素之前插入s2中从下标pos2开始的len个字符 s.insert(pos, cp, len) 在下标为pos的元素之前插入cp所指向数组的前len个字符 s.insert(pos, cp) 在下标为pos的元素之前插入cp所指向的以空字符结束的字符串副本 s.assign(s2) 用s2的副本替换s s.assign(s2, pos2, len) 用s2中从下标pos2开始的len个字符副本替换s s.assign(cp, len) 用cp所指向数组的前len个字符副本替换s s.assign(cp) 用cp所指向的以空字符结束的字符串副本替换s s.erase(pos, len) 删除从下标pos开始的len个字符 string的字串操作 s.substr(pos, n) 返回一个string类型的字符串,它包含s中从下标pos开始的n个字符 s.substr(pos) 返回一个string类型的字符串,它包含从下标pos开始到s末尾的所有字符 s.substr() 返回s的副本 修改string对象的操作 s.append(args) 将args串接在s后面。返回s引用 s.replace(pos, len, args) 删除s中从下标pos开始的len个字符,用args指定的字符替换之。返回s的引用 在这个版本中,args不能为b2, e2 s.replace(b, e, args) 删除迭代器b和e标记范围内所有的字符,用args替换之。返回s的引用 在这个版本中,args不能为s2, pos2, len2 append和replace操作的参数:args s2 string类型的字符串s2 s2, pos2, len2 字符串s2中从下标pos2开始的len2个字符 cp 指针cp指向的以空字符结束的数组 cp, len2 cp指向的以空字符结束的数组中前len2个字符 n, c 字符c的n个副本 b2, e2 迭代器b2和e2标记的范围内所有字符 string对象中字符的处理(cctype中的函数) isalnum(c) 如果c是字母或数字,则为true isalpha(c) 如果c是字母,则为true iscntrl(c) 如果c是控制字符,则为true isdigit(c) 如果c是数字,则为true isgraph(c) 如果c不是空格,但可打印,则为true islower(c) 如果c是小写字母,则为true isprint(c) 如果c是可打印字符,则为true ispunct(c) 如果c是标点符号,则为true isspace(c) 如果c是空白字符,则为true isupper(c) 如果c是大写字母,则为true isxdigit(c) 如果c是十六进制数,则为true tolower(c) 如果c是大写字母,返回其小写字母形式,否则直接返回c toupper(c) 如果c是小写字母,则返回其大写字母形式,否则直接返回c string查找操作符 s.find(args) 在s中查找args的第一次出现 s.rfind(args) 在s中查找args的最后一次出现 s.find_first_of(args) 在s中查找args的任意字符的第一次出现 s.find_last_of(args) 在s中查找args的任意字符的最后一次出现 s.find_first_not_of(args) 在s中查找第一个不属于args的字符 s.find_last_not_of(args) 在s中查找最后一个不属于args的字符 string类型提供的find操作的参数 c, pos 在s中,从下标pos标记的位置开始,查找字符c。pos的默认值为0 s2, pos 在s中,从下标pos标记的位置开始,查找string对象s2。pos的默认值为0 cp, pos 在s中,从下标pos标记的位置形参,查找指针cp所指向的C分隔的以空字符结束的字符串。pos的默认值为0 cp, pos, n 在s中,从下标pos标记的位置开始,查找指针cp所指向数组的前n个字符。pos和n都没有默认值 string类型compare操作 s.compare(s2) 比较s和s2 s.compare(pos1, n1, s2) 让s中从pos下标位置开始的n1个字符与s2做比较 s.compare(pos1, n1, s2, pos2, n2) 让s中从pos1下标位置开始的n1个字符与s2中从pos2下标位置开始的n2个字符做比较 s.compare(cp) 比较s和cp所指向的以空字符结束的字符串 s.compare(pos1, n1, cp) 让s中从pos1下标位置开始的n1个字符与cp所指向的字符串作比较 s.compare(pos1, n1, cp, n2) 让s中从pos1下标位置开始的n1个字符与cp所指向的字符串的前n2个字符做比较 初始化vector vector v1; vector保存类型为T对象,默认构造函数v1为空 vector v2(v1); v2是v1的一个副本 vector v3(n, i); v3包括n个值为i的元素 vector v4(n); v4含有值初始化元素的n个副本 vector操作 v.empty() 如果v为空,则返回true,否则返回false v.size() 返回v中的元素个数 v.push_back(t) 在v的末尾增加一个值为t的元素 v[n] 返回v中位置为n的元素 v1=v2 把v1的元素替换为v2中元素的副本 v1==v2 如果v1与v2相等,则返回true !=, <, <=, >, >= 保持这些操作符惯有的含义 初始化bitset对象的方法 bitset b; b有n位,每位都0 bitset b(u); b是unsigned long型u的一个副本 bitset b(s); b是string对象s中含有的位串的副本 bitset b(s, pos, n); b是s中从位置pos开始的n个位的副本 bitset操作 b.any() b中是否存在置为1的二进制位? b.none() b中不存在置为1的二进制位? b.count() b中置为1的二进制位的个数 b.size() b中二进制位的个数 b[pos] 访问b中在pos处二进制位 b.test(pos) b中在pos位的二进制位置为1? b.set() 把b中所有二进制位都置为1 b.set(pos) 把b中在pos处的二进制位置为1 b.reset() 把b中所有二进制位都置为0 b.reset(pos) 把b中在pos处的二进制位置为0 b.flip() 把b中所有二进制位逐位取反 b.flip(pos) 把b中在pos处的二进制位取反 b.to_ulong() 用b中同样的二进制位返回一个unsigned long值 os<) strlen(s) 返回s的长度,不包括字符串结束符null strcmp(s1, s2) 比较两个字符串s1和s2是否相同,返回0(=),正数(>),负数(<) strcat(s1, s2) 将字符串s2连接到s1后,并返回s1 strcpy(s1, s2) 将s2复制给s1,并返回s1 strncat(s1, s2, n) 将s2的前n个字符连接到s1后面,并返回s1 strncpy(s1, s2, n) 将s2的前n个字符复制给s1,并返回s1 算术操作符 操作符 功能 用法 + unary plus(一元正号) +expr - unary minus(一元负号) - expr * multiplication(乘法) expr* expr / division(除法) expr/ expr % remainder(求余) expr% expr + addition(加法) expr+ expr - subtraction(减法) expr- expr 下列操作产生bool值 操作符 功能 用法 ! logical NOT(逻辑非) !expr < less than(小于) expr< expr <= less than or equal(小于等于) expr<= expr > greater than(大于) expr> expr >= greater than or equal(大于等于) expr>= expr == equality(相等) expr== expr != inequality(不等) expr!= expr && logical AND(逻辑与) expr&& expr || logical OR(逻辑或) expr|| expr 位操作符 操作符 功能 用法 ~ bitwise NOT(位求反) ~ expr << left shift(左移) expr<< expr >> right shift(右移) expr>> expr & bitwise AND(位与) expr& expr ^ bitwise XOR(位异或) expr^ expr | bitwise OR(位或) expr| expr 操作符的优先级 操作符及其结合性 功能 用法 L :: global scope(全局作用域) :: name L :: class scope(类作用域) class :: name L :: namespace scope(名字空间作用域) namespace :: name L . member selectors(成员选择) object . member L -> member selectors(成员选择) pointer->member L [] subscript(小标) variable[expr] L () function call(函数调用) name(expr_list) L () type construction(类型构造) type(expr_list) R ++ postfix increment(后自增操作) lvalue++ R -- postfix decrement(后自减操作) lvalue-- R typeid type ID(类型ID) typeid(type) R typeid run-time type ID(运行时类型ID) typeid(expr) R explicit cast type conversion(类型转换) cast_name (expr) R sizeof size of object(对象的大小) sizeof expr R sizeof size of type(类型的大小) sizeof(type) R ++ prefix increment(前自增操作) ++lvalue R -- prefix decrement(前自减操作) --lvalue R ~ bitwise NOT(位求反) ~expr R ! logical NOT(逻辑非) !expr R - unary minus(一元负号) -expr R + unary plus(一元正号) +expr R * dereference(解引用) *expr R & address-of(取地址) &expr R () type conversion(类型转换) (type) expr R new allocate object(创建对象) new type R delete deallocate object(释放对象) delete expr R delete[] deallocate array(释放数组) delete[] expr L ->* ptr to member select(指向成员操作的指针) ptr->*ptr_to_member L .* ptr to member select(指向成员操作的指针) obj.*ptr_to_member L * multiply(乘法) expr* expr L / divide(除法) expr/ expr L % modulo (remainder)(求模(求余)) expr% expr L + add(加法) expr+ expr L - subtract(减法) expr- expr L << bitwise shifr left(位左移) expr<< expr L >> bitwise shift right(位右移) expr>> expr L < less than(小于) expr< expr L <= less than or equal(小于或等于) expr<= expr L > greater than(大于) expr> expr L >= greater than or equal(大于或等于) expr>= expr L == equality(相等) expr== expr L != inequality(不等) expr!= expr L & bitwise AND(位与) expr& expr L ^ bitwise XOR(位异或) expr^ expr L | bitwise OR(位或) expr| expr L && logical AND(逻辑与) expr&& expr L || logical OR(逻辑或) expr|| expr R ?: conditional(条件操作) expr? expr: expr R = assignment(赋值操作) lvalue=expr R *=, /=, %= compound assign(复合赋值操作) lvalue+=expr, etc. R +=, -= R <<=, >>= R &=, |=, ^= R throw throw exception(抛出异常) throw expr L , comma(逗号) expr, expr 在头文件中定义的标准异常类 exception 最常见的问题 runtime_error 运行时错误:仅在运行时才能检测到问题 range_error 运行时错误:生成的结果超出了有意义的值域范围 overflow_error 运行时错误:计算上溢 underflow_error 运行时错误:计算下溢 logic_error 逻辑错误:可在运行前检测的问题 domain_error 逻辑错误:参数的结果值不存在 invalid_error 逻辑错误:不合适的参数 length_error 逻辑错误:试图生成一个超出该类型最大长度的对象 out_of_range 逻辑错误:使用一个超出有效范围的值 IO标准库类型和头文件 头文件 类型 iostream istream从流中读取 ostream写到流中去 iostream对流进行读写;从istream和ostream派生而来 fstream ifstream从文件中读取;由istream派生而来 ofstream写到文件中去;由ostream派生而来 fstream读写文件;由iostream派生而来 sstream istringstream从string对象中读取;由istream派生而来 ostringstream写到string对象中去;由ostream派生而来 stringstream对string对象进行读写;由iostream派生而来 IO标准库的条件状态 strm::iostate 机器相关的整型名,由各个iostream类定义,用于定义条件状态 strm::badbit strm::iostate类型的值,用于指出被破坏的流 strm::failbit strm::iostate类型的值,用于指出失败的IO操作 strm::eofbit strm::iostate类型的值,用于指出流已经到达文件结束符 s.eof() 如果设置了流s的eofbit值,则该函数返回true s.fail() 如果设置了流s的failbit值,则该函数返回true s.bad() 如果设置了流s的badbit值,则该函数返回true s.good() 如果流s处于有效状态,则该函数返回true s.clear() 将流s中的所有状态值都重设为有效状态 s.clear(flag) 将流s中的某个指定条件状态设置为有效。flag的类型是strm::iostate s.setstate(flag) 给流s添加指定条件。flag的类型是strm::iostate s.rdstate() 返回流s的当前条件,返回值类型为strm::iostate 文件模式 in 打开文件做读操作 out 打开文件做写操作 app 在每次写之前找到文件尾 ate 打开文件后立即将文件定位在文件尾 trunk 打开文件时清空已存在的文件流 binary 以二进制模式进行IO操作 文件模式的组合 out 打开文件做写操作,删除文件中已有的数据 out|app 打开文件做写操作,在文件尾写入 out|trunk 与out模式相同 in 打开文件做读操作 in|out 打开文件做读、写操作,并定位在文件开头处 in|out|trunc 打开文件做读、写操作,删除文件中已有的数据 stringstream特定的操作 stringstream strm; 创建自由的stringstream对象 stringstream strm(s); 创建存储s的副本的stringstream对象,其中s是string类型的对象 strm.str(); 返回strm中存储的string类型对象 strm.str(s); 将string类型的s复制给strm,返回void 顺序容器类型 顺序容器 vector 支持快速随即访问 list 支持快速出入/删除 deque 双端队列 顺序容器适配器 stack 后进先出(LIFO)堆栈 queue 先进先出(FIFO)队列 priority_queue 有优先级管理的队列 容器构造函数 C c; 创建一个名为c的容器。C是容器类型名,如vector,T是元素类型,如int或string适用于所有容器。 C c(c2); 创建容器c2的副本c;c和c2必须具有相同的容器类型,并存放相同类型的元素。适用于所有容器。 C c(b, e); 创建c,其元素是迭代器b和e标示的范围内元素的副本。适用于所有容器。 C c(n, t); 用n个值为t的元素创建容器c,其中值t必须是容器类型C的元素类型的值,或者是可转换为该类型的值。只适用于顺序容器。 C (n); 创建有n个值初始化(value-intitialized)元素的容器c。只适用于顺序容器。 常用迭代器运算 *iter 返回迭代器iter所指向的元素的引用 iter->mem 对iter进行解引用,获取指定元素中名为mem的成员。等效于(*iter).mem ++iter, iter++ 给iter加1,使其指向容器的下一个元素 --iter, iter-- 给iter减1,使其指向容器的前一个元素 iter1==iter2, iter1!=iter2 比较两个迭代器是否相等(或不等)。当两个迭代器指向同一个容器中的同一个元素,或者当他们都指向同一个容器的超出末端的下一位置时,两个迭代器相等 vector和deque类型迭代器支持的操作 iter+n, iter-n 在迭代器上加(减)整数值n,将产生指向容器中前面(后面)第n个元素的迭代器。新计算出来的迭代器必须指向容器中的元素或超出容器末端的下一位置 iter1+=iter2, iter1-=iter2 这里迭代器加减法的复合运算:将iter1加上或减去iter2的运算结果赋给iter1 iter1-iter2 两个迭代器的减法,其运算结果加上右边的迭代器即得左边的迭代器。这两个迭代器必须指向同一个容器中的元素或超出容器末端的下一位置。只适用于vector和deque容器 >, >=, <, <= 迭代器的关系操作符。当一个迭代器指向的元素在容器中位于另一个迭代器指向的元素之前,则前一个迭代器小于后一个迭代器。关系操作符的两个迭代器必须指向同一个容器中的元素或超出容器末端的下一位置。只适用于vector和deque容器 容器定义的类型别名 size_type 无符号整型,足以存储此容器类型的最大可能容器长度 iterator 此容器类型的迭代器类型 const_iterator 元素的只读迭代器类型 reverse_iterator 按逆序寻址元素的迭代器 const_reverse_iterator 元素的只读(不能写)逆序迭代器 difference_type 足够存储两个迭代器差值的有符号整型,可为负数 value_type 元素类型 reference 元素的左值类型,是value_type&的同义词 const_reference 元素的常量左值类型,等效于const value_type& 容器的begin和end操作 c.begin() 返回一个迭代器,它指向容器c的第一个元素 c.end() 返回一个迭代器,它指向容器c的最后一个元素的下一位置 c.rbegin() 返回一个逆序迭代器,它指向容器c的最后一个元素 c.rend() 返回一个逆序迭代器,它指向容器c的第一个元素的前面位置 在顺序容器中添加元素的操作 c.push_back(t) 在容器c的尾部添加值为t的元素。返回void类型 c.push_front(t) 在容器c的前端添加值为t的元素。返回void类型。 只适用于list和deque容器类型 c.insert(p, t) 在迭代器p所指向的元素前面插入值为t的新元素。返回指向新添加元素的迭代器 c.insert(p, n, t) 在迭代器p所指向的元素前面插入n个值为t的新元素。返回void类型 c.insert(p, b, e) 在迭代器p所指向的元素前面插入由迭代器b和e标记的范围内的元素。返回void类型 顺序容器的大小操作 c.size() 返回容器c中的元素个数。返回类型为c::size_type c.max_size() 返回容器c可容纳的最多元素个数,返回类型为c::size_type c.empty() 返回标记容器大小是否为0的bool值 c.resize() 调整容器c的长度大小,使其能容纳n个元素,如果n=c.size(),则该操作未定义 只适用于vector和deque c.at(n) 返回下标为n的元素的引用。如果下标越界,则该操作未定义 只适用于vector和deque容器 删除顺序容器内元素的操作 c.erase(p) 删除迭代器p所指向的元素 返回一个迭代器,它指向被删除元素后面的元素。如果p指向容器内的最后一个元素,则返回的迭代器指向容器的超出末端的下一位置。如果p本身就是指向超出末端的下一位置的迭代器,则该函数未定义 c.erase(b, e) 删除迭代器b和e所标记的范围内所有的元素 返回一个迭代器,它指向被删除元素段后面的元素。如果e本身就是指向超出末端的下一位置的迭代器,则返回的迭代器也指向容器的超出末端的下一位置 c.clear() 删除容器c内的所有元素。返回void c.pop_back() 删除容器c的最后一个元素。返回void。如果c为空容器,则该函数未定义 c.pop_front() 删除容器c的第一个元素。返回void。如果c为空容器,则该函数未定义 只适用于list或deque容器 顺序容器的赋值操作 c1=c2 删除容器c1的所有元素,然后将c2的元素复制给c1。c1和c2的类型(包括容器类型和元素类型)必须相同 c1.swap(c2) 交换内容:调用完该函数后,c1中存放的是c2原来的元素,c2中存放的则是c1原来的元素。c1和c2的类型必须相同。该函数的执行速度通常要比将c2复制到c1的操作快 c.assign(b, e) 重新设置c的元素:将迭代器b和e标记的范围内所有的元素复制到c中。b和e必须不是只想c的元素的迭代器 c.assign(n, t) 将容器c重新设置为存储n个值为t的元素 适配器通用的操作和类型 size_type 一种类型,足以存储此适配器类型最大对象的长度 value_type 元素类型 container_type 基础容器的类型,适配器在此容器类型上实现 A a; 创建一个新空适配器,命名为a A a(c); 创建一个名为a的心适配器,初始化为容器c的副本 关系操作符 所有适配器都支持全部关系操作符:==, !=, <, <=, >, >= 栈容器适配器支持的操作 s.empty() 如果栈为空,则返回true,否则返回stack s.size() 返回栈中元素的个数 s.pop() 删除栈顶元素的值,但不返回其值 s.top 返回栈顶元素的值,但不删除该元素 s.push(item) 在栈顶压入新元素 队列和优先级队列支持的操作 q.empty() 如果队列为空,则返回true,否则返回false q.size() 返回队列中元素的个数 q.pop() 删除队首元素,但不返回其值 q.front() 返回队首元素的值,但不删除该元素。该操作只适用于队列 q.back() 返回队尾元素的值,但不删除该元素。该操作只适用于队列 q.top() 返回具有最高优先级的元素值,但不删除该元素。 该操作只使用与优先级队列 q.push(item) 对于queue,在队尾压入一个新元素,对于priority_queue,在基于优先级的适当位置插于新元素 关联容器类型 map 关联数组:元素通过键来存储和读取 set 大小可变的集合,支持通过键实现的快速读取 multimap 支持同一个键多次出现的map类型 multiset 支持同一个键多次出现的set类型 pairs类型提供的操作 pair p1; 创建一个空的pair对象,它的两个元素分别是T1和T2类型,采用值初始化 pair p1(v1, v2); 创建一个pair对象,它的两个元素分别是T1和T2,其中first成员初始化为v1,而second成员初始化v2 make_pair(v1, v2) 以v1和v2值创建一个新pair对象,其元素类型类型分别是v1和v2的类型 p1 m; 创建一个名为m的空map对象,其键和值的类型分别为k和v map m(m2); 创建m2的副本m,m与m2必须有相同的键类型和值类型 map m(b, e); 创建map类型的对象m,存储迭代器b和e标记的范围内所有元素的副本。元素的类型必须能转换为pair map类定义的类型 map::key_type 在map容器中,用做索引的键的类型 map::mapped_type 在map容器中,键所关联的值的类型 map::value_type 一个pair类型,它的first元素具有const map::key_type类型,而second元素则为map::mapped_type类型 map容器提供的insert操作 m.insert(e) e是一个用在m上的value_type类型的值。如果键(e.first)不在m中,则插入一个值为e.second的新元素;如果该键在m中已存在,则保持m不变。该函数返回一个pair类型对象,包含指向键为e.first的元素的map迭代器,以及一个bool类型的对象,表示是否插入了该元素 m.insert(beg, end) beg和end是标记元素范围的迭代器,其中的元素必须为m.value_type类型的键—值对。对于该范围内的所有元素,如果它的键在m中不存在,则将该键及其关联的值插入到m。返回void类型 m.insert(iter, e) e是一个用在m上的value_type类型的值。如果键(e.first)不在m中,则创建新元素,并以迭代器iter为起点搜索新元素存储的位置。返回一个迭代器,指向m中具有给定键的元素 不修改map对象的查询操作 m.count(k) 返回m中k的出现次数 m.find(k) 如果m容器中存在按k索引的元素,则返回指向该元素的迭代器。如果不存在,则返回超出末端迭代器 从map对象中删除元素 m.erase(k) 删除m中键为k的元素。返回size_type类型的值,表示删除的元素个数 m.erase(p) 从m中删除迭代器p所指向的元素。p必须指向m中确实存在的元素,而且不能等于m.end()。返回void m.erase(b, e) 从m中删除一段范围内的元素,该范围由迭代器对b和e标记。b和e必须标记m中的一段有效范围:即b和e都必须指向m中的元素或最后一个元素的下一个位置。而且,b和e要么相等(此时删除的范围为空),要么b所指向的元素必须出现在e所指向的元素之前。返回void类型 返回迭代器的关联容器操作 m.lower_bound(k) 返回一个迭代器,指向键不小于k的第一个元素 m.upper_bound(k) 返回一个迭代器,指向键大于k的第一个元素 m.equal_range(k) 返回一个迭代器的pair对象 它的first成员等价于m.lower_bound(k)。而second成员等价于m.upper_bound(k) iostream迭代器的构造函数 istream_iterator in(strm); 创建从输入流strm中读取T类型对象的istream_iterator对象 istream_iterator in; istream_iterator对象的超出按迭代器 ostream_iterator in(strm); 创建将T类型的对象写到输入流strm的ostream_iterator对象 ostream_iterator in(strm, delim); 创建将T类型的对象写到输出流strm的ostream_iterator对象,在写入过程中使用delim作为元素的分隔符。delim是以空字符结束的字符数组 istream_iterator的操作 it1==it2 it1!=it2 比较两个istream_iterator对象是否相等(不等)。迭代器读取的必须是相同的类型。如果两个迭代器都是end值,则它们相等。对于两个都不指向流结束为止的迭代器,如果它们使用同一个输入流构造,则它们也相等 *it 返回从流中读取的值 it->mem 是(*it).mem的同义词。返回从流中读取的对象的mem成员 ++it it++ 通过使用元素类型提供的>>操作从输入流中读取下一个元素值,使迭代器向前移动。通常,前缀版本使用迭代器在流中向前移动,并返回对加1后的迭代器的引用。而后缀版本使迭代器在流中向前移动后,返回原值 迭代器种类 Input iterator(输入迭代器) 读,不能写;只支持自增运算 Output iterator(输出迭代器) 写,不能读;只支持自增运算 Forward iterator(前向迭代器) 读和写;只支持自增运算 Bidirectional iterator(双向迭代器) 读和写;支持自增和自减运算 Random access iterator(随机访问迭代器) 读和写;支持完整的迭代器算数运算 list容器特用的操作 lst.merge(lst2) lst.merge(lst2, comp) 将lst2的元素合并到lst中。这两个list容器对象都必须排序。lst2中的元素将被删除。合并后,lst2为空。返回void类型。第一个版本使用<操作符,而第二个版本则使用comp指定的比较运算 lst.remove(val) lst.remove_if(unaryPred) 调用lst.erase删除所有等于指定值或使指定的谓词函数返回非零值的元素。返回void类型 lst.reverse() 反向排列lst中的元素 lst.sort 对lst中的元素排序 lst.splice(iter, lst2) lst.splice(iter, lst2, iter2) lst.splice(iter, beg, end) 将lst2的元素移到lst中迭代器iter指向的元素前面。在lst2中删除移出的元素。第一个版本lst2的所有元素移到lst中;合并后,lst2为空。lst和lst2不能是同一个list对象。第二个版本只移动iter2所指向的元素,这个元素必须是lst2中的元素。在这种情况中,lst和lst2可以是同一个list对象。也就是说,可在一个list对象中使用splice运算移动一个元素。第三个版本移动迭代器beg和end标记的范围内的元素。beg和end照例必须指定一个有效的范围。这两个迭代器可标记任意list对象内的范围,包括lst。当它们指定lst的一段范围时,如果iter也指向这个范围的一个元素,则该运算未定义。 lst.unique() lst.unique(binaryPred) 调用erase删除同一个值的团结副本。第一个版本使用==操作符判断元素是否相等;第二个版本则使用指定的谓词函数实现判断 可重载的操作符 + - * / % ^ & | ~ ! , = < > <= >= ++ -- << >> == != && || += -= /= %= ^= &= |= *= <<= >>= [] () -> ->* new new[] delete delete[] 不能重载的操作符 :: .* . ?: 标准库函数对象 算数函数对象类型 plus applies+ minus applies- multiplies applies* divides applies/ modulus applies% negate applies- 关系函数对象类型 equal_to applies== not_equal_to applies!= greater applies> greater_equal applies>= less applies< less_equal applies<= 逻辑函数对象类型 logical_and applies&& logical_or applies| logical_not applies! 查询程序设计:扼要重述 TextQuery 读指定文件并建立数的上映射的类,该类提供query_text操作,该操作接受string实参并返回一个set,保存出现实参的行的编号。 Query_base 查询类得抽象基类。 Query 用户基数的句柄类,它指向Query_base派生类型的对象。 WordQuery 从Query_base派生的类,查找给定单词。 NotQuery 从Query_base派生的类,返回操作数不出现的行的编号集合。 BinaryQuery 从Query_base派生的抽象基类类型,表示带两个Query操作数的查询。 OrQuery 从BinaryQuery派生的类,返回两个操作数出现的行编号集得并集。 AndQuery 从BinaryQuery派生的类,返回两个操作数出现的行编号集得交集。 q1&q2 返回Query对象,该Query对象绑定到保存q1和q2的新AndQuery对象。 q1|q2 返回Query对象,该Query对象绑定到保存q1和q2的新OrQuery对象。 ~q 返回Query对象,该Query对象绑定到保存q的新NotQuery对象。 Query q(s) 将Query q绑定到保存string s的新WordQuery对象。 auto_ptr类 auto_ptr ap; 创建名为ap的未绑定的auto_ptr对象 auto_ptr ap(p); 创建名为ap的auto_ptr对象,ap拥有指针p指向的对象。该构造函数为explicit auto_ptr ap1(ap2); 创建名为ap1的auto_ptr对象,ap1保存原来存储在ap2中的指针。将所有权转给ap1,ap2成为未绑定的auto_ptr对象 ap1=ap2 将所有权ap2转给ap1.删除ap1指向的对象并且使ap1指向ap2指向的对象,使ap2成为未绑定的 ~ap 析构函数。删除ap指向的对象 *ap 返回对ap所绑定的对象的引用 ap-> 返回ap保存的指针 ap.reset(p) 如果p和ap的值不同,则删除ap指向的对象并且将ap绑定到p ap.release() 返回ap所保存的指针并且使ap成为未绑定的 ap.get() 返回ap保存的指针 ZooAnimal/Endangered类中的虚函数 函数 定义自己版本的类 print ZooAnimal::ZooAnimal Bear::Bear Endangered::Endangered Panda::Panda highlight Endangered::Endangered Panda::Panda toes Bear::Bear Panda::Panda cuddle Panda::Panda destructor ZooAnimal::ZooAnimal Endangered::Endangered 标准allocator类与定制算法 allocator a; 定义名为a的allocator对象,可以分配内存或构造T类型的对象 a.allocator(n) 分配原始的未构造内存以保存T类型的n个对象 a.deallocate(p, n) 释放内存,在名为p的T*指针中包含的地址处保存T类型的n个对象。运行调用deallocate之前在该内存中构造的任意对象的destroy是用户的责任 a.construct(p, t) 在T*指针p所指内存中构造一个新元素。运行T类型的复制构造函数用t初始化该对象 a.destroy(p) 运行T*指针p所指对象的析构函数 uninitialized_copy(b, e, b2) 从迭代器b和e指出的输入范围将元素复制到从迭代器b2开始的未构造的原始内存中。该函数在目的地构造元素,而不是给它们赋值。假设由b2指出的目的地足以保存输入范围中元素的副本 uninitialized_fill(b, e, t) 将由迭代器b和e指出的范围中的对象初始化为t的副本。假定该范围是未构造的原始内存。使用复制构造函数构造对象 uninialized_fill_n(b, e, t, n) 将由迭代器b和e指出的范围中至多n个对象初始化为t的副本。假定范围至少为n个元素大小。使用复制构造函数构造对象 type_info的操作 t1==t2 如果两个对象t1和t2类型相同,就返回true;否则,返回false t1!=t2 如果两个对象t1和t2类型不同,就返回true;否则,返回false t.name() 返回C风格字符串,这是类型名字的可显示版本。类型名字用系统相关的方法产生 t1.before(t2) 返回指出t1是否出现在t2之前的bool值。before强制的次序与编译器有关 标准库名字和头文件 名字 头文件 名字 头文件 about ios_base accumulate isalpha allocator islower auto_ptr ispunct back_inserter isspace bad_alloc istream bad_cast istream_iterator bind2nd istringstream bitset isupper boolalpha left cerr less_equal cin list copy logic_error count lower_bound count_if make_pair cout map dec max deque min endl multimap ends multiset equal_range negate exception noboolalpha fill noshowbase fill_n noshowpoint find noskipws find_end notl find_first_of nounitbuf fixed nouppercase flush nth_element for_each oct front_inserter ofstream fstream ostream getline ostream_iterator hex ostringstream ifstream out_of_range inner_product pair inserter partial_sort internal plus priority_queue sqrt ptrdiff_t stable_sort queue stack range_error strcmp replace strcpy replace_copy string reverse_iterator stringstream right strlen runtime_error strncpy scientific terminate set tolower set_difference toupper set_intersection type_info set_union unexpected setfill uninitialized_copy setprecision unitbuf setw unique showbase unique_copy showpoint upper_bound size_t uppercase skipws vector sort iostream中定义的操纵符 boolalpha 将真和假显示为字符串 x noboolalpha 将真和假显示为1,0 showbase 产生指出数的基数的前缀 x noshowbase 不产生记数基数前缀 showpoint 总是显示小数点 x noshowpoint 有小数部分才显示小数点 showpos 显示非负数中的+ x noshowpos 不显示非负数中的+ uppercase 在十六进制中打印OX,科学计数法中打印E x nouppercase 在十六进制中打印Ox,科学计数法中打印e x dec 用十进制显示 hex 用十六进制显示 oct 用八进制显示 left 在值的右边增加填充字符 right 在值的左边增加填充字符 internal 在符号和值之间增加填充字符 fixed 用小数形式显示浮点数 scientific 用科学计数法显示浮点数 flush 刷新ostream缓冲区 ends 插入空字符,然后刷新ostream缓冲区 endl 插入换行符,然后刷新ostream缓冲区 unitbuf 在每个输出操作之后刷新缓冲区 x nounitbuf 恢复常规缓冲区刷新 x skipws 为输入操作符跳过空白 noskipws 不为输入操作符跳过空白 ws “吃掉”空白 注:带x的是默认流状态。 iomanip中定义的操纵符 setfill(ch) 用ch填充空白 setprecision(n) 将浮点精度置为n setw(w) 读写w个字符的值 setbase(b) 按基数b输出整数 单字节低级IO操作 is.get(ch) 将istream is的下一个字节放入ch。返回is os.put(ch) 将字符ch放入ostream,返回os is.get() 返回is的下一字节作为一个int值 is.putback() 将字符ch放回is,返回is isunget() 将is退回一个字节,返回is ispeek() 将下一字节作为int值返回但不移出它 多字节低级IO操作 is.get(sink, size, delim) 从is中读size个字节并将它们存储到sink所指向的字符数组中。读操作直到遇到delim字符,或已经读入了size个字节,或遇到文件结束符才结束。如果出现了delim,就将它刘子输入流上,不读入到sink中。 is.getline(sink, size, delim) 与三个实参的get行为类似,但读并丢弃delim is.read(sink, size) 读size个字节到数组sink,返回is is.gcout() 返回最后一个未格式化读操作从流is中读到的字节数 os.write(source, size) 将size个字从数组source写至os。返回os is.igore(size, delim) 读并忽略至多size个字符,直到遇到delim,但不包括delim。默认情况下,size是1而delim是文件结束符 seek和tell函数 seekg 重新定位输入流中的标记 tellg 返回输入流中标记的当前位置 seekp 重新定位输出流中的标记 tellp 返回输出流中标记的当前位置 beg 流的开头 cur 流的当前位置 end 流的末尾

下载文档到电脑,查找使用更方便

文档的实际排版效果,会与网站的显示效果略有不同!!

需要 6 金币 [ 分享文档获得金币 ] 0 人已下载

下载文档