(三)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;
}

 

做一个优秀的程序媛
原文地址:https://www.cnblogs.com/oytt/p/13953522.html