C++复合数据类型:vector|string

文章目录

  • 模板类vector
    • 初始化
    • 访问
    • 修改
    • 添加
  • 标准库类型string
    • 初始化
    • 访问
    • 拼接
    • 比较字符串

模板类vector

初始化

访问

修改

添加

数组长度在初始化时已经定义,访问范围也有限,数组长度还得通过计算
所以C++中定义了很多扩展的“抽象数据类型”,放于“标准库”中
对于数组功能进行扩展的一个标准库类型就是 “容器” vector。vector“容纳”着一堆数据对象,其实就是一组类型相同的数据对象的集合。

除了vector,c++ 11还新增了array模板类,和数组更加类似,长度固定,但更加方便安全,一般在实际应用中固定长度数组使用array,不固定长度数组使用vector。

#include
#include

using namespace std;

int main()
{
    //默认初始化
    vector<int> v1;
    //列表初始化(拷贝初始化)
    vector<char> v2 = {'a', 'b', 'c', 'd'};
    vector<char> v3{'a', 'b', 'c', 'd'};

    //直接初始化
    vector<short> v4(5); //长度为5,初始化默认为0
    vector<long> v5(5, 100); // 长度5,初始化默认为100

    //访问元素
    cout << v4[2]  << endl;
    cout << v5[3] << endl;

    //修改
    v5[3] = 24;
    cout << v5[3] << endl;

    //对于越界访问,相对于数组更安全,会直接报错

    //遍历所有元素
    cout << "v5的长度:" << v5.size() << endl;
    for(int i = 0; i < v5.size(); i++)
    {
        cout << v5[i] << "\t";
    }
    cout << endl;

    //相对于数组还有一个功能:可以添加元素
    v5.push_back(56);

    //或者也可以通过范围循环
    for(int num: v5)
    {
        cout << num <<"\t";
    }
    cout << endl;    
}

标准库类型string

初始化

访问

拼接

比较字符串

同样可以使用 s.size()获取字符串长度。

#include
#include

using namespace std;

int main()
{
    //初始化

    //默认初始化
    string s1;

    //拷贝初始化
    string s2 = "hello world";
    string s3 = s2;

    //直接初始化
    string s4("hello python");
    string s5(5, 'h');

    cout << s5 << endl;

    //访问
    cout << s4[1] << endl;

    //修改
    s4[0] = 'H';
    cout << s4 << endl;

    //字符串长度
    cout << "s4的长度:" << s4.size() << endl;
    s4[s4.size() - 1] = 'N';
    cout << s4 << endl;

    //最好也不要越界访问

    //将s4所有字符都转换为大写
    for(int i; i < s4.size(); i++)
    {
        s4[i] = toupper(s4[i]);
    }
    cout << s4 << endl;

    //字符串拼接
    string s6("hello");
    string s7("my life");
    string s8 = s6 + ", " + s7 + "!"; //字符和字符串是不同的,如果此处用的是 ', ',则会报错
    cout << s8 << endl;

    // string s8 = "hello, " + "my life" 错误,两个字符串字面值常量
    // "asasa" 字符串字面值常量的类型并不是string,而是一个char类型的字符数组,所以无法调用string里定义的运算符+,至少要有一个对象是string类型
    //因此在拼接时按照左结合率,必须左边是string类型,这是为了和C兼容。

    //比较字符串: ==   !=    >    <    >=   <=
    
}

C++复合数据类型:vector|string_第1张图片

你可能感兴趣的:(C++学习记录,c++,开发语言)