【基础知识补充】标准库类型:string和vector

标准库类型:string

         string 表示可变长的字符序列 

/**
 * ---------------------------------------------------------------------------
 * 一、定义和初始化string对象:
 *      拷贝初始化:使用等号"="初始化一个变量。
 *      直接初始化:使用圆括号"()",里面放初始值。
 * 
 *      多值初始化
 */
string s1,s6;                   // 默认初始化,是一个空字符串
string s2 = "hello";            // 【拷贝初始化】等价于:s2("hello");  s2是该字符串字面值的副本
string s3(s2);                  // 【直接初始化】等价于:s3 = s2;      s3是s2的副本
string s4(10,'c');              // 【直接初始化-多值】s4的内容是 cccccccccc。由连续10个字符c组成的串
string s5 = string(10,'d');     // 【拷贝初始化-多值】显式的创建一个(临时)对象拷贝给s5 

/**
 * ---------------------------------------------------------------------------
 * 二、string对象上的操作:
 *  读写string对象:
 *      os << s   -->将s写到输出流os当中,返回os
 *      is >> s   -->从输入流is中读取字符串赋给s,遇到空白停止,返回is
 *  读取一整行:getline(is,s)
 *      getline函数代替原来的 >> 运算符。参数是一个输入流和一个string对象。遇到换行符停止
 *  判断s对象是否为空:s.empty() 
 *      返回一个布尔值。
 *  返回s对象的字符长度:s.size() 、s.length()
 *      返回一个string::size_type类型的值
 *  返回s中第n个字符的引用:v[n]
 *          位置下标从0开始
 *  比较string对象:比较对象中的字符,依照(大小写敏感的)字典顺序
 *      ==,!=,>,>=,<,<=
 *      比较规则:1、两个string对象中字符相同长度不同,比长度。如"qwerr">"qwer"
 *               2、两个string对象某些对应的位置上不一致,则比较第一对相异字符。如"cba"<"ca"
 *  拼接string对象:
 *      两个string对象相加
 *      字面值和string对象相加
 *
 */
cin >> s6;                      // 键盘输入字符赋值给s6
cout << s6 <<endl;              // 输出s6对象内容

cout << s1.size() <<endl;       // 输出:0
cout << s1.empty() <<endl;      // 输出:1,代表true,为空
cout << s2.size() << endl;      // 输出:5
cout << s2.length() << endl;    // 输出:5
cout << s2.empty() <<endl;      // 输出:0,代表false,不为空

cout << s2[2] <<endl;           // 输出:l,下标从0开始

cout << (s2 == s3) << endl;     // 输出:1,代表true,两个对象相等
cout << (s2 == s4) << endl;     // 输出:0,代表false,两个对象不相等
cout << (s4 < s5) << endl;      // 输出:1,代表true,s4 小于 s5【比较字符大小】

cout << (s2 + s4) << endl;      // 输出:hellocccccccccc
cout << (s2 + " hi") << endl;   // 输出:hello hi

/**
 * ---------------------------------------------------------------------------
 * 三、处理string对象中的字符
 *  判断某字符特性,引入cctype头文件
 */

 标准库类型:vector(容器)

         1、vector表示对象的集合,其中所有对象的类型都相同。但不包含引用(引用不是对象)
         2、集合中的每个对象都有一个与之对应的索引(即下标),索引用于访问对象
         3、vector是一个类模板。【编译器根据模板创建类或函数的过程称为实例化】

/**   
 * ---------------------------------------------------------------------------
 * 一、定义和初始化vector对象
 *      拷贝初始化:使用等号"="初始化一个变量。
 *      直接初始化:使用花括号"{}",里面放列表初始值。
 *      提供一个类内初始值:
 */
vector<int> v1;                 //默认初始化,是一个空vector,元素类型是int型
vector<int> v2{1,2,3,4,5,6,7};  //等价于:v2 = {1,2,3,4,5,6,7};  每个元素被赋予了初始值
vector<int> v3(v2);             //等价于:v3 = v2;               v3是v2的副本
vector<string> v4(7,"hi");     //等价于:v4 = vector(10,"hi");   包含了7个重复的元素,每个元素的值都被初始化为"hi"
vector<int> v5(7);             //7个元素,每个都初始化为0

/**   
 * ---------------------------------------------------------------------------
 * 二、vector对象上的操作
 *      判断v对象是否为空:v.empty()
 *          返回一个布尔值
 *      返回v中元素的个数:v.size()
 *          返回一个vector<int>::size_type类型的值
 *      返回v中第n个位子上的元素的引用:v[n]
 *          位置下标从0开始
 *      比较vector对象:比较对象中的元素值,依照(大小写敏感的)字典顺序
 *          ==,!=,>,>=,<,<=
 * 
 *      向vector对象中添加元素:v.push_back()
 *          把一个值当成vector对象的尾元素压到对象尾端
 *          隐含要求:如果循环体内部包含有向vector对象添加元素的语句,则不能使用范围for循环
 *      
 */
cout << v1.size() <<endl;       // 输出:0
cout << v1.empty() <<endl;      // 输出:1,代表true,为空
cout << v2.size() << endl;      // 输出:7
cout << v2.empty() <<endl;      // 输出:0,代表false,不为空

cout << v2[5] <<endl;           // 输出:6,下标从0开始

cout << (v2 == v3) << endl;     // 输出:1,代表true,两个对象相等
cout << (v2 == v5) << endl;     // 输出:0,代表false,两个对象不相等
cout << (v2 < v5) << endl;      // 输出:0,代表false,v4 大于 v5【比较元素1值大小】

v2.push_back(8);                //v2中添加元素8

for(int &i : v2)                //对于v中的每个元素(注意:i是一个引用,i值改变对应容器中元素值改变)
    i *= i;                     //求元素值的平方 【*= 把运算符左右侧对象相乘,结果存入左侧运算对象】

for(int i : v2)
    cout<< i<< " ";             //输出:1 4 9 16 25 36 49 64

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值