• 第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 流

  • 相关阅读:
    servlet生命周期和线程安全
    如何保证Redis与数据库的数据一致性
    消息队列高可用、幂等性、顺序性、可靠性传输、堆积问题解决
    如何保证消息队列消息的顺序性
    RabbitMQ 如何保证消息不丢失?
    深入理解MySql事务
    MySQL/mariadb知识点总结
    如何实现一个线程安全的单例,前提是不能加锁
    DUBBO原理、应用与面经总结
    SpringBoot中资源初始化加载的几种方式
  • 原文地址:https://www.cnblogs.com/lulululu/p/3693843.html
Copyright © 2020-2023  润新知