C++ Primer阅读笔记--标准库类型string和vector的使用

1--string类型

① string::size_type 类型

std::string s1;
std::string::size_type len = s1.size();

        size() 函数返回的类型是 string::size_type,其是一个无符号类型的值,可用于存放任何 string 对象的大小;

        在 C++ 11 新标准中,允许编译器通过 auto 或者 decltype 来自动推断变量的类型,则:auto len = s1.size();

② 字面值与 string 对象相加

        当使用加法运算符(+)将操作 string 对象时,必须保证加法运算符两侧的运算对象至少有一个是 string;

string s1 = "hello";
string s2 = s1 + ","; //正确,s1为string对象,把一个 string 对象和一个字面值相加
string s3 = "hello" + ","; //错误,两个运算对象都不是 string

string = s1 + "," + "world"; // 正确,因为 s1+","返回的是一个string类型

③ 基于 for 语句处理 string 字符

for (declaration : expression)
    statement

        expression 是一个 string 对象,在每次迭代中,expression 的一个字符会用于初始化变量 declaration;

std::string str("some string")
for(auto c : str)
    std::cout << c << std::endl;

2--补充知识

        C++标准库中除了定义 C++ 语言特有的功能外,也兼容了 C 语言的标准库;对于 C 语言中形如 name.h  的头文件,C++ 则命名为 cname,以此说明该头文件属于 C 语言标准库;一般在 C++ 程序中建议在使用 C 语言标准库时,使用 cname 而不是 name.h;

3--vector类型

        vector 能容纳绝大多数类型的对象作为其元素,但由于引用不是对象,所以不存在包含引用的 vector;

        通过引用遍历 vector 的元素,可以修改容器的元素;

vector<int> v{1, 2, 3, 4, 5, 6, 7, 8, 9}
for(auto &i : v)
    i *= i; 

4--迭代器

        拥有迭代器的标准库类型使用 iterator 和 const_iterator 来表示迭代器的类型:

vector<int>::iterator it; // it能读写 vector<int> 的元素
string::iterator it2; // it2能读写 string 对象中的字符

vector<int>::const_iterator it3; // it3只能读元素,不能写元素
string::const_iterator it4; // it4只能读字符,不能写字符

        如果 vector 对象或 string 对象是一个常量,则只能使用 const_iterator;如果 vector 对象或 string 对象不是一个常量,则既能使用 iterator 也能使用 const_iterator;

        begin 和 end 返回的具体类型由对象是否是常量决定,如果对象是常量,则 begin 和 end 返回 const_iterator;如果对象不是常量,则返回 iterator;

        为了专门得到 const_iterator 类型的返回值,C++11 新标准引入了 cbegin 和 cend 两个函数;

vector<int> v;
auto it3 = v.cbegin(); // it3的类型是vector<int>::const_iterator

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值