当前位置: 首页 > news >正文

湖州专业做网站本厂有大量手工活外发

湖州专业做网站,本厂有大量手工活外发,广州安全教育平台入口登录,制作书签的感受心得定义于头文件 <array> template< class T, std::size_t N > struct array;(C11 起) std::array 是封装固定大小数组的容器。 此容器是一个聚合类型&#xff0c;其语义等同于保有一个 C 风格数组 T[N] 作为其唯一非静态数据成员的结构体。不同于 C 风格数…
定义于头文件 <array>
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) 的要求。

当其长度为零时 arrayN == 0 )有特殊情况。此时, array.begin() == array.end() ,并拥有某个唯一值。在零长 array 上调用 front() 或 back() 是未定义的。

亦可将 array 当做拥有 N 个同类型元素的元组。

迭代器非法化

按照规则,指向 array 的迭代器在 array 的生存期间决不非法化。然而要注意,在 swap 时,迭代器将继续指向同一 array 的元素,并将改变元素的值。

容量

检查容器是否为空

std::array<T,N>::empty

constexpr bool empty() const noexcept;

(C++11 起)
(C++20 前)

[[nodiscard]] constexpr bool empty() const noexcept;

(C++20 起)

 检查容器是否无元素,即是否 begin() == end() 。

参数

(无)

返回值

若容器为空则为 true ,否则为 false

复杂度

常数。

返回容纳的元素数

std::array<T,N>::size

size_type size() const noexcept;

(C++11 起)

返回容器中的元素数,即 std::distance(begin(), end()) 。

参数

(无)

返回值

容器中的元素数量。

复杂度

常数。

 

返回可容纳的最大元素数

std::array<T,N>::max_size

constexpr size_type max_size()  noexcept;

(C++11 起)
(C++14 前)

constexpr size_type max_size() const noexcept;

(C++14 起)

 返回根据系统或库实现限制的容器可保有的元素最大数量,即对于最大容器的 std::distance(begin(), end()) 。

参数

(无)

返回值

元素数量的最大值。

复杂度

常数。

注意

因为每个 std::array<T, N> 都是固定大小容器,故 max_size 返回的值等于 N (亦为 size 所返回的值)

操作

以指定值填充容器

std::array<T,N>::fill

void fill( const T& value );

(C++11 起)
(C++20 前)

constexpr void fill( const T& value );

(C++20 起)

 赋给定值 value 给容器中的所有元素。

参数

value-要赋给元素的值

返回值

(无)

复杂度

与容器大小成线性。

交换内容

std::array<T,N>::swap

void swap( array& other ) noexcept(/* see below */);

(C++11 起)
(C++20 前)

constexpr void swap( array& other ) noexcept(/* see below */);

(C++20 起)

将容器内容与 other 的内容交换。不导致迭代器和引用关联到别的容器。

参数

other-要与之交换内容的 array

返回值

(无)

异常

noexcept 规定:  

noexcept(noexcept(swap(std::declval<T&>(), std::declval<T&>())))

在以上表达式中,按照同 C++17 std::is_nothrow_swappable 特性所用的行为查找标识符 swap

(C++17 前)
noexcept 规定:  

noexcept(std::is_nothrow_swappable_v<T>)

(C++17 起)

对于零长 array ,noexcept 规定:  noexcept

复杂度

与容器大小成线性。

 

调用示例

#include <iostream>
#include <string>
#include <iterator>
#include <algorithm>
#include <functional>
#include <time.h>
#include <array>using namespace std;struct Cell
{int x;int y;Cell() = default;Cell(int a, int b): x(a), y(b) {}Cell &operator +=(const Cell &cell){x += cell.x;y += cell.y;return *this;}Cell &operator +(const Cell &cell){x += cell.x;y += cell.y;return *this;}Cell &operator *(const Cell &cell){x *= cell.x;y *= cell.y;return *this;}Cell &operator ++(){x += 1;y += 1;return *this;}bool operator <(const Cell &cell) const{if (x == cell.x){return y < cell.y;}else{return x < cell.x;}}bool operator >(const Cell &cell) const{if (x == cell.x){return y > cell.y;}else{return x > cell.x;}}bool operator ==(const Cell &cell) const{return x == cell.x && y == cell.y;}
};std::ostream &operator<<(std::ostream &os, const Cell &cell)
{os << "{" << cell.x << "," << cell.y << "}";return os;
}using namespace std;int main()
{std::cout << std::boolalpha;std::mt19937 g{std::random_device{}()};srand((unsigned)time(NULL));auto generate = [](){int n = std::rand() % 10 + 110;Cell cell{n, n};return cell;};//遵循聚合初始化的规则初始化 array (注意默认初始化可以导致非类的 T 的不确定值)std::array<Cell, 6> array1;std::cout << "array1:   ";std::copy(array1.begin(), array1.end(), std::ostream_iterator<Cell>(std::cout, " "));std::cout << std::endl;std::generate(array1.begin(), array1.end(), generate);std::cout << "array1:   ";std::copy(array1.begin(), array1.end(), std::ostream_iterator<Cell>(std::cout, " "));std::cout << std::endl;std::cout << std::endl;//检查容器是否无元素,即是否 begin() == end() 。std::cout << "array1 empty: " << array1.empty() << std::endl;std::array<Cell, 0> array2;std::cout << "array2 empty: " << array2.empty() << std::endl;std::cout << std::endl;//返回容器中的元素数,即 std::distance(begin(), end()) 。std::cout << "array1 contains " << array1.size() << " elements." << std::endl;std::cout << "array2 contains " << array2.size() << " elements." << std::endl;std::cout << std::endl;//返回根据系统或库实现限制的容器可保有的元素最大数量,即对于最大容器的 std::distance(begin(), end()) 。std::cout << std::endl;std::cout << "array1 max_size " << array1.max_size() << std::endl;std::cout << "array2 max_size " << array2.max_size() << std::endl;std::cout << std::endl;//赋给定值 value 给容器中的所有元素。Cell cell = generate();array1.fill(cell);std::cout << "array1.fill( " << cell << " )" << std::endl;std::cout << "array1:   ";std::copy(array1.begin(), array1.end(), std::ostream_iterator<Cell>(std::cout, " "));std::cout << std::endl;std::cout << std::endl;std::array<Cell, 6> array3;std::generate(array3.begin(), array3.end(), generate);std::cout << "swap before:" << std::endl;std::cout << "array1:   ";std::copy(array1.begin(), array1.end(), std::ostream_iterator<Cell>(std::cout, " "));std::cout << std::endl;std::cout << "array3:   ";std::copy(array3.begin(), array3.end(), std::ostream_iterator<Cell>(std::cout, " "));std::cout << std::endl;//将容器内容与 other 的内容交换。不导致迭代器和引用关联到别的容器。array1.swap(array3);std::cout << "swap after:" << std::endl;std::cout << "array1:   ";std::copy(array1.begin(), array1.end(), std::ostream_iterator<Cell>(std::cout, " "));std::cout << std::endl;std::cout << "array3:   ";std::copy(array3.begin(), array3.end(), std::ostream_iterator<Cell>(std::cout, " "));std::cout << std::endl;std::cout << std::endl;return 0;
}

输出

 

http://www.yayakq.cn/news/481355/

相关文章:

  • 给城市建设提议献策的网站怎么自己做游戏
  • 绍兴市交通建设有限公司网站中建八局第一建设有限公司董事长
  • 外贸soho 怎么做网站做物流的网站
  • 网站改版推荐专做洗衣柜的网站
  • 安徽池州做网站的公司做网站后端要什么技术
  • 天津智能网站建设制作网络科技建设网站
  • adsl做网站模版和模板的区别
  • 淘宝推广网站建设做软件开发的网站有哪些
  • 做网站设计管理需要什么知识品牌建设和品牌打造
  • 济宁做网站的公司做阿里巴巴的网站的费用
  • 网站建设公司的组织架构惠州公司网站建设价格
  • asp.net网站开发之美wordpress主git题
  • 玄武建设局网站网站改版 程序变了 原来的文章内容链接地址 打不开怎么办
  • wordpress主题优点四川seo关键词工具
  • 网站iis安全配置wordpress访问文件夹
  • 浙江网站设计公司产品开发项目管理
  • 贵阳网站开发哪家好开工作室需要什么条件
  • 建设电玩网站一般的美工可以做网站吗
  • 网站后台登陆密码忘记免费搭建网站模板
  • 哈尔滨网站开发渠道wordpress拨号功能
  • 德州力点科技 网站建设WordPress文章类别ID
  • 在线阅读小说网站开发天元建设集团有限公司烟台招聘
  • 大连h5建站模板免费做简易网站
  • 房子设计图软件app免费整站策划营销型网站建设网站优化
  • 网站服务器查询平台搜索引擎在哪里获取网站
  • 大连市那里做网站宣传的好济南网络公司排行榜
  • 网站建设策划 流程图discuz网站搬家
  • 电子商务网站开发的历程网页搜索屏蔽广告
  • 手把手教你入侵网站修改数据wordpress 推送公众号
  • 网站开发哪里网页版微信网址