zoukankan      html  css  js  c++  java
  • (三)STL序列容器(array)

    初始化

    1. std::array<double,10> arr;
        创建10个浮点型元素,但是未显示指定10个元素的值,因此各个元素的值是不确定的,array容器是不会做默认初始化操作
    2. std::array<double,10> arr{};   所有元素默认初始化为0.0
    3. std::array<double,19> arr{1.9,20.2,1.2,2};   只初始化了前4个元素,剩余的元素都被初始化为0.0

    使用

    #include <iostream>
    //需要引入 array 头文件
    #include <array>
    #include <vector>
    using namespace std;
    
    /*
    (1) at(n)
        返回容器n中的引用
    (2) get<n>
        模板函数,能够获取容器的第n个元素
    (3) begin()
        返回第一个元素的迭代器
    (4) end()
        返回最后一个元素之后的一个位置的正向迭代器n+1
    (5) data()
        得到指向容器首个元素的指针,通过该指针,可以获得容器中各个元素
    (6) size()
        返回容器元素的个数,返回值size_t
    */
    int main()
    {
        cout << "------基本用法-------" << endl;
        array<int, 4> arr1{};
        // 初始化
        for (int i = 0; i < arr1.size(); i++) {
            arr1.at(i) = i+10;
        }
        for (auto b1 = arr1.begin(); b1 < arr1.end(); b1++) {
            cout << *b1 << endl;
        }
    
        cout << "-------随机访问------" << endl;
        array<int, 4> arr2;
        int h = 22;
        auto first = arr2.begin();
        auto end = arr2.end();
        // 初始化
        while (first != end) {
            *first = h;
            ++first;
            h++;
        }
    
        first = arr2.begin();
        while (first != end) {
            cout << *first << endl;
            ++first;
        }
    
        cout << "-------访问单个------" << endl;
        array<string, 3> arr3{ "china","english","guba" };
        cout << get<2>(arr3) << endl; // get<3>越界
        cout << arr3.at(2) << endl; // at(n)
        cout << *(arr3.data()) << endl;
        cout << *(arr3.data()+1) << endl;
        cout << arr3[1] << endl;
    
        cout << "-------访问多个------" << endl;
        array<int, 5> arr4;
        array<int, 5> arr5;
    
        // 初始化arr4
        for (size_t b2 = 0; b2 < arr4.size(); b2++) {
            arr4.at(b2) = 9;
        }
    
        // 初始化arr5
        int n = 10;
        for (auto& b3 : arr5) {
            b3 = n;
            n++;
        }
    
        // 打印arr4的值
        for (auto b4 = arr4.begin(); b4 < arr4.end(); b4++) {
            cout <<"b4: "<< *b4 << endl;
        }
    
        // 打印arr5的值
        for (auto b5 = arr5.begin(); b5 < arr5.end(); b5++) {
            cout << "b5: " << *b5 << endl;
        }
    
        cout << "-------升级------" << endl;
        // 当两个array容器满足大小相同并且保持元素类型相同时,可以直接赋值
        array<char, 30>arr6{ "you are rich" };
        array<char, 30>arr7{ "you need food" };
        arr6 = arr7;
        cout << arr6.data() << endl;
        cout << arr7.data() << endl;
    
        system("pause");
        return 1;
    }

     

    做一个优秀的程序媛
  • 相关阅读:
    springboot2 整合雪花算法,并兼容分布式部署
    docker 在 linux 搭建私有仓库
    jdbc 几种关系型数据库的连接 和 driver_class,以及简单的使用
    springboot2 整合发送邮件的功能
    oracle 唯一新约束 和 逻辑删除的 冲突处理办法
    oracle 一些常见操作方法
    spring-cloud-stream 整合 rabbitmq
    springboot2 整合 rabbitmq
    docker 安装 rabbitmq 消息队列
    网络统计学目录
  • 原文地址:https://www.cnblogs.com/oytt/p/13953522.html
Copyright © 2011-2022 走看看