array
1.array
array-静态数组
1.介绍
array容器在C++普通数组的基础上,添加了一些函数。在使用上,它比普通数组更安全。
2.头文件及命名空间
1 #include<array> 2 using namespace std;
3.举例
array<double,10> arr;//声明一个装有10个double型元素的数组容器,容器名为arr
4.初始化
1 //array容器不会像普通数组那样进行默认初始化 2 array<int,10> arr01 {};//全部初始化为0 3 array<int,10> arr02 {1,2,3};//前三个元素初始化为1,2,3, 其他元素初始化为0
//上述初始化可以加等号,但是务必注意必须显性初始化,异于普通数组的默认初始化
5.遍历
//法1 数组名[下标] #include<iostream> #include<array> using namespace std; int main(){ array<int,10> arr {1,3,5,7,9,2,4,6,8,10}; for (size_t i = 0; i < arr.size(); i++) { cout<<arr[i]<<' '; } return 0; }
//法2 迭代器 #include<iostream> #include<array> using namespace std; int main(){ array<int,10> arr {1,3,5,7,9,2,4,6,8,10}; // for (array<int,10>::iterator it = arr.begin(); it != arr.end(); it++) // { // cout<<*it<<' '; // } for (auto it = arr.begin(); it != arr.end(); it++) { cout<<*it<<' '; } return 0; }
// 法3:增强for循环
#include <iostream> #include <array> using namespace std; int n; int main() { cout<<"请输入n:"<<'\n'; cin>>n; array<int,10> arr = {}; for (int i = 0; i < n; i++) { cout<<"请输入:"; int x; cin>>x; arr.at(i)=x; } for (auto &x : arr) { x+=x/3+2*x; cout<<x<<' '; } return 0; } /* 输入&输出 */
// 请输入n: // 6 // 请输入:8 // 请输入:9 // 请输入:8 // 请输入:5 // 请输入:6 // 请输入:4 // 26 30 26 16 20 13 0 0 0 0
★6.accumulate()
使用accumulate()函数实现数组快速求和
#include<iostream> #include<array> #include<numeric>//accumulate函数 using namespace std; array<int,10> arr {1,3,5,7,9,2,4,6,8,10}; int main(){ cout<<accumulate(arr.begin(),arr.end(),0);//第三个参数相当于int sum = 0 的初始值0 return 0; } //输出:55 //若把第三个参数改为3,那么输出将会是58(55+3=58).
7.size()
//获取容器内元素的个数 #include<iostream> #include<array> using namespace std; array<int,10> arr={1,3,5,7,9,2,4,6,8,10}; int main(){ cout<<"arr内元素个数为:"<<arr.size()<<endl; return 0; } //输出:arr内元素个数为:10
8.empty()
判断容器是否为空
//若容器为空则返回真 #include<iostream> #include<array> using namespace std; array<int,0> arr;//第二个参数为0,容器为空 int main(){ if (arr.empty()) { cout<<"arr is empty"<<endl; } return 0; } //输出:arr is empty
★9.fill()
将全部元素赋初值
//给所有元素初始化为特定值 #include<iostream> #include<array> using namespace std; array<int,5> arr; int main(){ arr.fill(-1); for (size_t i = 0; i < arr.size(); i++) { cout<<arr[i]<<" "; } return 0; } //输出:-1 -1 -1 -1 -1
10.front()和back()
front()获取首元素,即arr[0]
back()获取末元素
11. begin()和end()
分别获取首元素的迭代器、末元素的下一个位置的迭代器
12.综合运用
#include <iostream> #include <array> using namespace std; int main() { // 创建一个存储 5 个 int 类型元素的数组 arr1,元素默认初始化为 0 array<int, 5> arr1 = {}; // 通过下标访问数组元素,并进行赋值 arr1[0] = 1; arr1[1] = 2; arr1[2] = 3; arr1[3] = 4; arr1[4] = 5; // 用循环访问数组元素 for (int i = 0; i < arr1.size(); i++) { // 输出:1 2 3 4 5 cout << arr1[i] << ' '; } cout << endl; // 创建一个存储 4 个 double 类型元素的数组 arr2,元素默认初始化为 0.0 array<double, 4> arr2 = {}; // 通过快速 for 循环访问数组元素,并进行赋值 int cnt = 0; for (auto& x : arr2) { x = cnt++ * 1.1; } // 用迭代器访问数组元素 for (auto it = arr2.begin(); it != arr2.end(); it++) { // 输出:0 1.1 2.2 3.3 cout << *it << ' '; } cout << endl; // 创建一个存储 3 个 string 类型元素的数组 arr3,用 {} 初始化列表进行赋值 array<string, 3> arr3 = {"hello", "world", "!"}; // 用 auto 关键字快速 for 循环遍历数组元素 for (const auto& s : arr3) { // 输出:hello world ! cout << s << ' '; } cout << endl; // 使用 at() 函数访问数组元素,如果下标越界则抛出异常 arr1.at(10) = 100; // 抛出 std::out_of_range 异常 /* 输出:terminate called after throwing an instance of 'std::out_of_range' what(): array::at: __n (which is 10) >= _Nm (which is 5) */ return 0; }
posted on 2023-02-15 22:57 ShinnyBlue 阅读(308) 评论(0) 编辑 收藏 举报
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
· 提示词工程——AI应用必不可少的技术