我是靠谱客的博主 英俊长颈鹿,最近开发中收集的这篇文章主要介绍c++11之数组array定义注意事项例子STL:array/vector/list比较,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

c++11数组)

  • 定义
  • 注意事项
  • 例子
  • STL:array/vector/list比较

定义

C++11后,标准库引入了更现代化的数组std::array,cppreference.com是这样介绍的:

定义于头文件
template<
class T,
std::size_t N
struct array;
(C++11 起)
std::array 是封装固定大小数组的容器。
此容器是一个聚合类型,其语义等同于保有一个 C 风格数组 T[N] 作为其唯一非静态数据成员
的结构体。不同于 C 风格数组,它不会自动退化成 T* 。作为聚合类型,它能聚合初始化,只
要有至多 N 个能转换成 T 的初始化器: std::array<int, 3> a = {1,2,3};
该结构体结合了 C 风格数组的性能和可访问性和容器的优点,譬如知晓其大小、支持赋值、随机访问等。
std::array 满足容器 (Container) 和可逆容器 (ReversibleContainer) 的要求,除
了默认构造的 array 是非空的,及交换的复杂度是线性,它满足相接容器
(ContiguousContainer) 的要求并 (C++17 起)部分满足顺序容器
(SequenceContainer) 的要求。
一种特殊情况是 array ( N == 0 ) 该情况下, array.begin() == array.end() ,
并拥有某个唯一值。在零长 array 上调用 front() 或 back() 的效应是未定义的。
array 亦可用作拥有 N 个同类型元素的元组。

简单来说,std::array除了有传统数组支持随机访问、效率高、存储大小固定等特点外,还支持迭代器访问、获取容量、获得原始指针等高级功能。而且它还不会退化成指针T *给开发人员造成困惑。

注意事项

尽量使用at方法来访问元素,因为运算符[]不会对索引值进行检查,像myarray[-1]是不会报错的。使用at(),将在运行期间捕获非法索引的,默认将程序中断。

  • 定义时必须指定array的大小,因为大小是模板参数之一,不可忽略;
  • 定义时不能使用变量指定大小;
  • 可通过array构造新的array,可以使用{}构造;
  • 不可使用数组构造,

例子

用std::array后,可以更简便地进行初始化、修改、遍历,这里有个例子:

int main(){
std::array<int, 10> arr = {1,2,3,4,5,6,7,8,9,0};
std::for_each(arr.begin(), arr.end(), [](int &i){i++;});
for(auto i : arr){std::cout << i << " ";}
}

STL:array/vector/list比较

Functionarrayvectorlist
constructornoyesyes
destructornoyesyes
empty()yesyesyes
size()yesyesyes
resize()noyesyes
capacity()noyesno
reserve()noyesno
max_size()yesyesyes
erase()noyesyes
clear()noyesyes
operator=yesyesyes
operator<yesyesyes
operator==yesyesyes
operator[]yesyesno
at()yesyesno
front()yesyesyes
back()yesyesyes
ush_back()noyesyes
pop_back()noyesyes
assign()yesyesyes
insert()noyesyes
swap()yesyesyes
push_front()nonoyes
pop_front()nonoyes
merge()nonoyes
remove()nonoyes
remove_if()nonoyes
reverse()nonoyes
sort()nonoyes
splice()nonoyes
unique()nonoyes

最后

以上就是英俊长颈鹿为你收集整理的c++11之数组array定义注意事项例子STL:array/vector/list比较的全部内容,希望文章能够帮你解决c++11之数组array定义注意事项例子STL:array/vector/list比较所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(37)

评论列表共有 0 条评论

立即
投稿
返回
顶部