c++ STL 004 容器(array)

array

是一个模板类:

函数原型:

	template < class T, size_t N > class array;

Array class
Arrays are fixed-size sequence containers: they hold a specific number of elements ordered in a strict linear sequence.

c++ STL 004 容器(array)_第1张图片

成员函数
  1. 返回Iterators 对象数据, 返回的是一个常量/非常量引用对象
  2. 容量,大小,是否为空
  3. 数组修改,成员引用
  4. 非成员函数重载
  5. 其他
//
//
#include 
#include 

using namespace std;

int main(){

    array<int,10> myarray;
    for (int i = 0; i < 10; ++i) {
        // at 返回在数组中处于位置n的元素引用,是一个reference
        myarray.at(i) = i + 1;
    }
    for (int j = 0; j < 10; ++j) {
        cout << myarray.at(j) << endl;
    }
    //back 返回数组中最后一个位置元素的引用,是一个reference
    //front 返回数组中子一个位置元素的引用,是一个reference
    cout << myarray.back() << endl;
    myarray.back() = 123;
    cout << myarray.back() << endl;


    //begin() 返回指向数组第一个元素的引用,这个引用是一个迭代器对象。
    // end() 则返回数组末尾后的位置。不指向任何元素
    // 添加c前缀表示返回的是常量迭代器。
    // 添加r前缀表示返回的是反向迭代器。
    for (auto i = myarray.begin();  i != myarray.end() ; ++i) {
        // auto : array::iterator
        *i += 12;
        cout << *i  << endl;
    }

    for (auto i= myarray.cbegin();  i!=myarray.cend() ; ++i) {
        //auto : array::const_iterator
        //*i += 12;
        cout << *i << endl;
    }

    for (auto i = myarray.rbegin();  i!= myarray.rend() ; ++i) {
        // auto : array::reverse_itreator
        *i += 20;
        cout << *i << endl;
    }

    for (auto i= myarray.crbegin();  i != myarray.crend() ; ++i) {
        //auto : array::const_reverse_iterator
        //*i += 12;
        cout << *i << endl;
    }

    //返回数组对象中第一个元素的指针
    int* p = myarray.data();
    cout << p << endl;
    cout << *p << endl;
    p++;
    cout << *p << endl;
    cout << myarray.data() << endl;

    //数组容量是否为空,0表示不为空,1 表示为空
    cout << (myarray.empty()?"is empty":"not empty") << endl;

    //数组元素全部填充为指定的数据
    myarray.fill(10);
    for (int i = 0; i < 10 ; ++i) {
        cout << myarray[i] <<endl;
    }



    array<int,10> tarr;
    cout << "size: max_size" << endl;
    cout << tarr.max_size() << endl; //可容纳个数
    cout << tarr.size() << endl; //已存在个数

    tarr.swap(myarray); //相同大小和数据类型的数组进行元素的交换
    for (auto i = myarray.begin();  i != myarray.end(); ++i) {
        cout << *i << "\t";
    }

    return 0;
}


你可能感兴趣的:(C++,c++)