建设网站需要体现的流程有哪些,个人网站备案技巧,ftp上传网站步骤,深圳官方网站【STL三】序列容器——array一、array简介二、头文件三、模板类四、成员函数1、迭代器2、元素访问3、容量4、操作五、demo1、容量#xff08;不使用迭代器#xff09;2、使用迭代器3、元素访问 at()、front()、back()、data()一、array简介 array 容器是 C 11 标准中新增的序…
【STL三】序列容器——array一、array简介二、头文件三、模板类四、成员函数1、迭代器2、元素访问3、容量4、操作五、demo1、容量不使用迭代器2、使用迭代器3、元素访问 at()、front()、back()、data()一、array简介 array 容器是 C 11 标准中新增的序列容器简单地理解它就是在 C 普通数组的基础上添加了一些成员函数和全局函数。在使用上它比普通数组更安全且效率并没有因此变差。 和其它容器不同array 容器的大小是固定的无法动态的扩展或收缩这也就意味着在使用该容器的过程无法借由增加或移除元素而改变其大小它只允许访问或者替换存储的元素。 实际项目应用特别少。 二、头文件
#include array三、模板类
templateclass T,std::size_t Nstruct array;四、成员函数
1、迭代器
成员函数功能begin()返回指向容器中第一个元素的随机访问迭代器。end()返回指向容器最后一个元素之后一个位置的随机访问迭代器通常和 begin() 结合使用。rbegin()返回指向最后一个元素的随机访问迭代器。rend()返回指向第一个元素之前一个位置的随机访问迭代器。cbegin()和 begin() 功能相同只不过在其基础上增加了 const 属性不能用于修改元素。cend()和 end() 功能相同只不过在其基础上增加了 const 属性不能用于修改元素。crbegin()和 rbegin() 功能相同只不过在其基础上增加了 const 属性不能用于修改元素。crend()和 rend() 功能相同只不过在其基础上增加了 const 属性不能用于修改元素。
2、元素访问
成员函数功能operator[]访问指定的元素at(n)返回容器中 n 位置处元素的引用该函数自动检查 n 是否在有效的范围内如果不是则抛出 out_of_range 异常。front()返回容器中第一个元素的直接引用该函数不适用于空的 array 容器。back()返回容器中最后一个元素的直接应用该函数同样不适用于空的 array 容器。data()返回一个指向容器首个元素的指针。利用该指针可实现复制容器中所有元素等类似功能。
3、容量
成员函数功能size()返回容器中当前元素的数量其值始终等于初始化 array 类的第二个模板参数 N。max_size()返回容器可容纳元素的最大数量其值始终等于初始化 array 类的第二个模板参数 N。empty()判断容器是否为空和通过 size()0 的判断条件功能相同但其效率可能更快。
4、操作
成员函数功能fill(val)将 val 这个值赋值给容器中的每个元素。array1.swap(array2)交换 array1 和 array2 容器中的所有元素但前提是它们具有相同的长度和类型。
五、demo
1、容量不使用迭代器
//array 容器。
#include iostream
#include array
#includestring
using namespace std;
int main()
{arraystring,5 words{ one,two,three,four,five }; //words被初始化成有5个元素(固定cout 遍历正序 endl;for (int i 0; i words.size(); i)cout words[i] ; //像普通数组一样使用数组容器return 0;
}输出 遍历正序 one two three four five 2、使用迭代器
begin()、end()、rbegin()、rend()
//array 容器。
#include iostream
#include array
#includestring
#includevector
using namespace std;
int main()
{arraystring,5 words{ one,two,three,four,five }; //words被初始化成有5个元素(固定cout 遍历正序 endl;// std::arraystring::iterator iter;//错误arr容器不可以像其他容器这样定义初始化我也不清楚。for ( auto iter words.begin(); iter words.end(); iter)cout *iter ; cout endl;cout 遍历逆序 endl;for (auto iter words.rbegin(); iter words.rend(); iter)cout *iter ;return 0;
}输出 遍历正序 one two three four five 遍历逆序 five four three two one 3、元素访问 at()、front()、back()、data()
//array 容器。
#include iostream
#include array
#includestring
using namespace std;
int main()
{arraystring,5 words{ one,two,three,four,five }; //words被初始化成有5个元素(固定cout words.at(2) words.at(2) endl; cout words.front() words.front() endl;cout words.back() words.back() endl;string* dawords.data();while (!da-empty()){cout words.data() *da endl;da;}return 0;
}输出 words.at(2)three words.front()one words.back()five words.data()one words.data()two words.data()three words.data()four words.data()five words.data() 参考 1、C STL 容器库 中文文档 2、STL教程C STL快速入门 3、https://www.apiref.com/cpp-zh/cpp/header.html 4、https://en.cppreference.com/w/cpp/container