53:深入学习c++(STL之容器,stdarray)

template<typename T,typename s_size>
std::array<int ,10> a; // 定义数组大小为10 ,类型为int的数组
std::array<int ,10> a = {}; // c++ 11用法,初始化
std::array<int ,5> a = {1,2,3,4,5,6}; 挨个初始值
std:array<int ,5> a = {1};// 除开第一个元素会初始为1,后面四个会初始始为0



// 接口



a.empty() // 是否为空
a.size() ;// 大小
a.max_size();;// 最大上限,一般用不着
// operrator == <!= > <= >= 重载操作符
a.swap(b);
std::swap(a,b); array的交互是:值与值交互,当数组大时,可能会很慢,其它类型的则是指针的交换



//访问元素
a[1]
&a[0];
a.front() // 不能于用空数组,否则不知跑到那
a.back() // 不能于用空数组,否则不知跑到那



// 迭代器相关



a.begin();// 第一个
a.end();// 有效值最后一个的下一位,这个肯定是个空值
a.cbegin();// 返回const的第一个;即是不可修改
a.cend();
a.rbegin();// 倒数第一个
a.rend();// 最后一个,倒序
a.crbegin();不可修改的
a.crend(); 不可修改的



// 和C的接口互用
std::array<char,100> carr;
strcpy(&carr[0],"hello,world\n");
printf("%s",&carr[0]);



// 错误用法,

printf("%s",carr.begin());


// 特殊的地方

auto info std::get<1>(charr);

// 重置数组,全部为0

carr.fill(0)

//  异常 exception

c.at(pos);

copy mov swap


使用array场景,使用固定成员的场景,与原生的C++数 组,效率是一样的

使用array不好的地方,他在栈上,复制或赋值,他是需要很多内存的

发布了4 篇原创文章 · 获赞 0 · 访问量 39

猜你喜欢

转载自blog.csdn.net/u010665493/article/details/104387512
今日推荐