C++ STL array容器和普通数组的比较
发布时间:2020-12-16 07:36:06 所属栏目:百科 来源:网络整理
导读:和 C++ 普通数组存储数据的方式一样,C++ 标准库保证使用 array 容器存储的所有元素一定会位于连续且相邻的内存中,通过如下代码也可以验证这一点: #include iostream#include arrayusing namespace std;int main(){ arrayint,5a{1,2,3}; cout a[2] " " a[0]
和 C++ 普通数组存储数据的方式一样,C++ 标准库保证使用 array 容器存储的所有元素一定会位于连续且相邻的内存中,通过如下代码也可以验证这一点:
#include <iostream> #include <array> using namespace std; int main() { array<int,5>a{1,2,3}; cout << &a[2] << " " << &a[0] + 2 << endl; return 0; }输出结果为: 004FFD58 004FFD58 可以看到,a 容器中 &a[2] 和 &a[0] + 2 是相等的。因此在实际编程过程中,我们完全有理由去尝试,在原本使用普通数组的位置,改由 array 容器去实现。举个例子,我们完全可以使用 array 容器去存储 char* 或 const char* 类型的字符串: #include <iostream> #include <array> using namespace std; int main() { array<char,50>a{1,3}; strcpy(&a[0],"http://c.biancheng.net/stl"); printf("%s",&a[0]); return 0; }输出结果为: http://c.biancheng.net/stl 注意,array 容器的大小必须保证能够容纳复制进来的数据,而且如果是存储字符串的话,还要保证在存储整个字符串的同时,在其最后放置一个
|