C++容器array
来源:互联网 发布:怎么创建自己软件 编辑:程序博客网 时间:2024/06/06 02:40
【转自】:http://www.cnblogs.com/DswCnblog/p/5671799.html
array是一个固定大小的顺序容器,不能动态改变大小,array内的元素在内存中以严格的线性顺序存储,与普通数组声明存储空间大小[]的方式是一样有效的,只是加入了一些成员函数和全局函数[get (array)、operators (array)],以便当作标准容器使用零大小的array是有效的,但是不可以被成员函数front、back、data间接引用
array的swap是一个线性操作交换所有的元素,通常是非常低效的
Constructor:1.template < class T, size_t N > class array;举例:array<int,10> iArray={1,2,3,4,5,6,7,8,9,10};
Member functions:
Iterators
std::array<int,5> arr = { 2, 16, 77, 34, 50 }; std::cout << "arr contains:"; for ( auto it = arr.cbegin(); it != arr.cend(); ++it ){ *it = 34; //error can't modify *it arr.begin(); //point to array first element arr.front(); //return the first element arr.back(); //return the end element std::cout << *it << std::endl;}
Capacity
Element access
注意:使用at程序崩溃时不会显示堆栈信息,尽量使用[]去array的值
back
std::array<int,3> myarray = {5, 19, 77}; std::cout << "front is: " << myarray.front() << std::endl; // 5 std::cout << "back is: " << myarray.back() << std::endl; // 77 myarray.back() = 50; for ( int& x : myarray ) std::cout << " " << x; //5 19 50
data//返回指向array中第一个元素的指针
const char* cstr = "Test string"; std::array<char,12> charray; std::memcpy (charray.data(),cstr,12); std::cout << charray.data() << std::endl;//如果是char类型则打印值 Test string //如果array中保存的是int cout << iArray.data() << endl;//两者等效,等于打印出第一个元素的地址 cout << &charray << endl; array<string,5> sArray={"hello","c++","I"}; for (auto it = sArray.cbegin(); it != sArray.cend(); ++it) { cout << *it << '\t';//打印出hello c++ I } cout << sArray.data() << endl;//打印地址
Modifiers
fill
std::array<int, 5> arr;arr.fill(34);for (auto it = arr.begin(); it != arr.end(); it++){ std::cout << " " << *it;}arr.assign(5);for (auto it = arr.begin(); it != arr.end(); it++){ std::cout << " " << *it;}
OutPut:
34 34 34 34 34 5 5 5 5 5
swap
std::array<int,5> first = {10, 20, 30, 40, 50}; std::array<int,5> second = {11, 22, 33, 44, 55}; first.swap (second); std::cout << "first:"; for (int& x : first) std::cout << " " << x;
Global functions
get(array)//Returns a reference to the Ith element of array arr.
函数原型:1.template <size_t I, class T, size_t N> T& get ( array<T,N>& arr ) noexcept;2.template <size_t I, class T, size_t N> T&& get ( array<T,N>&& arr ) noexcept;3.template <size_t I, class T, size_t N> const T& get ( const array<T,N>& arr ) noexcept;
std::array<int,3> myarray = {10, 20, 30}; std::tuple<int,int,int> mytuple (10, 20, 30); std::tuple_element<0,decltype(myarray)>::type myelement; // int [decltype是新标准中用来取类型] //array头文件中重载了tuple_element和tuple_size方便和tuple交互 //交换myarray[0]和myarray[2] myelement = std::get<2>(myarray);//取出array中的30 std::get<2>(myarray) = std::get<0>(myarray);//把array中的10换成30 std::get<0>(myarray) = myelement;//把30赋值给第一个元素 std::cout << "first element in myarray: " << std::get<0>(myarray) << "\n"; std::cout << "first element in mytuple: " << std::get<0>(mytuple) << "\n";
Output:
first element in myarray: 30
first element in mytuple: 10
operators(array)
模板原型如下:1.template <class T, size_T N> bool operator== ( const array<T,N>& lhs, const array<T,N>& rhs );2.template <class T, size_T N> bool operator!= ( const array<T,N>& lhs, const array<T,N>& rhs );3.template <class T, size_T N> bool operator< ( const array<T,N>& lhs, const array<T,N>& rhs );4template <class T, size_T N> bool operator> ( const array<T,N>& lhs, const array<T,N>& rhs );5.template <class T, size_T N> bool operator<= ( const array<T,N>& lhs, const array<T,N>& rhs );6.template <class T, size_T N> bool operator>= ( const array<T,N>& lhs, const array<T,N>& rhs );
std::array<int,5> a = {10, 20, 30, 40, 50}; std::array<int,5> b = {10, 20, 30, 40, 50}; std::array<int,5> c = {50, 40, 30, 20, 10}; if (a==b) std::cout << "a and b are equal\n"; if (b!=c) std::cout << "b and c are not equal\n"; if (b<c) std::cout << "b is less than c\n"; if (c>b) std::cout << "c is greater than b\n"; if (a<=b) std::cout << "a is less than or equal to b\n"; if (a>=b) std::cout << "a is greater than or equal to b\n";
Output:
a and b are equal
b and c are not equal
b is less than c
c is greater than b
a is less than or equal to b
a is greater than or equal to b
- 用c语言实现c++ array容器类
- C++容器之array
- array数组容器 C++
- C++容器array
- STL容器array
- C++STL学习(6)其他容器(string,array,hashtable等)
- array.c
- c++:array
- C -array
- C++---array
- STL::array之数组容器
- C++ - "array<>"数组容器 详解
- c++顺序容器之array
- Android Sparse*Array容器解析
- C++--容器
- 【C/C++】STL容器
- TR1 五种新的容器 之 array
- Chapter 10.顺序容器array[c++11]
- 156:LETTERS(2.5基本算法之搜索)
- 在JAVA中如何跳出当前的多重嵌套循环?
- 排序算法总结
- PHP实现无符号右移(js中的 >>>)
- iOS开发之归档(NSKeyedArchiver)和反归档(NSKeyedUnarchiver)
- C++容器array
- Python 常用工具函数
- 临时对象的产生与运用
- UVA
- Windows环境使用Cygwin安装Hadoop(亲测可用)
- java集合
- 源代码安装apache服务器
- maven编译报No compiler is provided in this environment. Perhaps you are running on a JRE rather than a
- Asp.net+Vue2构建简单记账WebApp之四(vue.js构建记账主页面)