第3章 标准库类型

1.写出string类型的五种初始化方法

string str;

string str("value");

string str(str2);

string str(n,'c');

string str(iterator1,iterator2);

2.如何对string对象进行读写操作,如何读入未知数目的string对象?

#include<iostream>

#include<string>

using namespace std;

string s;

cin>>s; //读到空格为止

cout<<s<<endl;

--------------------------------

string s;

while(cin>>s)...

3.如何读取整行文本?string对象中是否具有换行符?

string line;
while (getline(cin, line))     //取cin的一行给line
cout << line << endl;

4. string对象的8个基本操作是什么?如何书写?

s.empty()
s.size()
s[n]
s1 + s2
s1 = s2
v1 == v2
!=, <, <=, >,  >=

5. size操作结果的类型是什么?

字符串中字符的个数

6. 字符处理的头文件是什么?有哪13个函数?

各种字符操作函数,适用于 string 对象的字符(或其他任何 char 值)。这些函数都在 cctype 头文件中定义。13个函数如下:

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。

7. string类型的头文件是什么?

string.h

8. vector类型的头文件是什么?

vector.h

9. vector的本质是什么?

本质是类模板

10. 写出vector的四个初始化方法。

vector<T> v1;                     vector 保存类型为 T 对象。默认构造函数 v1 为空。
vector<T> v2(v1);               v2 是 v1 的一个副本。
vector<T> v3(n, i);              v3 包含 n 个值为 i 的元素。
vector<T> v4(n);                 v4 含有值初始化的元素的 n 个副本。

11.vector对象的7个基本操作是什么?如何书写?

v.empty()                     如果 v 为空,则返回 true,否则返回 false。
v.size()                        返回 v 中元素的个数。v.empty() 如果 v 为空,则返回 true,否则返回 false。
v.push_back(t)           在 v 的末尾增加一个值为 t 的元素。
v[n]                               返回 v 中位置为 n 的元素。
v1 = v2                         把 v1 的元素替换为 v2 中元素的副本。
v1 == v2                      如果 v1 与 v2 相等,则返回 true。
!=, <, <=, >,   >=          保持这些操作符惯有的含义。

12. 编写for循环将vector iv(10)中所有元素设为10;

for  (vector<int>::size_type i=0;i!=iv.size();i++)

{

        iv[i]=10;

}

13. vector下标操作是否添加元素?

不是,下表操作必须是访问已经存在的元素,在vector中添加元素通常用push_back()

14.什么是迭代器?访问vector中元素的两种方法是什么?

迭代器是一种检查容器内元素并遍历元素的数据类型。

通过下标访问

for  (vector<int>::size_type i=0;i!=iv.size();i++)             iv[i]=0;

通过迭代器访问

for (vector<int>::size_type ix = 0; ix != ivec.size(); ++ix)        ivec[ix] = 0;

15. 下标操作和迭代器操作哪一个更通用?

迭代器操作更通用。

16. 容器的哪两个函数可以返回迭代器对象?

begin()返回指向容器首元素的迭代器;end()返回指向容器末元素的下一个位置的元素的迭代器,及超出末端迭代器。

17. 用迭代器的方法操作vectoriv(10)是每个元素为10;

for (vector<int>::size_type ix = 0; ix != ivec.size(); ++ix)        ivec[ix] =1 0;

18. 容器中的只读迭代器类型如何使用?与constiterator有何区别?

vector<string>::const_iterator iter=iv.begin();//只能用于读取容器内元素,不能改变其值

const vector<string>::iterator iter=iv.begin();//这个迭代器只能指向这一个位置,不能够再指向别的位置了,即迭代器本身的值是const,不能修改。

19. iterator的算术运算有哪两种?

iter + n
iter - n

可以对迭代器对象加上或减去一个整形值。这样做将产生一个新的迭代器,其位置在 iter 所指元素之前(加)或之后(减) n 个元素的位置。加或减之后的结果必须指向 iter 所指 vector 中的某个元素,或者是 vector 末端的后一个元素。加上或减去的值的类型应该是 vector 的 size_type 或 difference_type 类型。

iter1 - iter2
该表达式用来计算两个迭代器对象的距离,该距离是名为 difference_type 的 signed 类型 size_type 的值,这里的 difference_type 是 signed 类型,因为减法运算可能产生负数的结果。该类型可以保证足够大以存储任何两个迭代器对象间的距离。iter1 与 iter2 两者必须都指向同一 vector 中的元素,或者指向 vector 末端之后的下一个元素。

20. 写出bitset的四个初始化方法;

bitset<n> b;                           b 有 n 位,每位都 0
bitset<n> b(u);                      b 是 unsigned long 型 u 的一个副本
bitset<n> b(s);                      b 是 string 对象 s 中含有的位串的副本
bitset<n> b(s, pos, n);         b 是 s 中从位置 pos 开始的n 个位的副本。

21. bitset对象的14个基本操作是什么?

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 << b                把 b 中的位集输出到 os 流

posted @ 2014-04-22 10:21  蓝蓝鱼鱼  阅读(133)  评论(0编辑  收藏  举报