c++ array

定义

c++11添加了数组 array, 使用它需要包含 <array> 头文件,定义为:

template<typename _Tp, std::size_t _Nm>
struct array

优点

array不会像c语言中的数组一样会退化成T*。

#include <iostream>
#include <array>

using namespace std;


void func(array<int, 8> & a)
{
    cout << sizeof(a) << endl;
}

int main()
{
    array<int, 8> a;

    cout << sizeof(a) << endl;

    func(a);

    return 0;
}

输出:

32
32

array 具有C风格的数组的优点,比如能够随机访问、知道大小、赋值,同时,支持C++容器的部分功能

缺点

默认情况下,array中的元素值是随机的

不像vector容器,array的swap操作时间复杂度是 O(N)

#include <iostream>
#include <array>
#include <algorithm>

using namespace std;


int main()
{
    array<int, 8> a;

    for (int & e : a)
    {
        cout << e << endl; // 内部是随机值
    }

    a.fill(6);  // 全部赋值为6

    cout << a.size() << ' ' << a.max_size() << endl; // 8 8
    for_each(a.begin(), a.end(), [](int & i) {    // 遍历
        cout << i << ' ';
    });

    a.begin();
    a.end();
    a.cbegin();
    a.cend();
    a.rbegin();
    a.rend();
    a.crbegin();
    a.crend();

    cout << *a.data() << endl;
    cout << a.front() << ' ' << a.back() << endl;
    int *p = a.data();

    array<int, 8> b;

    a == b;
    a != b;
    a < b;

    cout << get<7>(a) << endl;

    return 0;
}

 

posted @ 2019-01-02 18:39  二狗啸地  阅读(1845)  评论(0编辑  收藏  举报