Array的简单使用(Boost和STL通用)
目录
介绍
本来这一次是想简单介绍一下Boost里面的协程库的使用的,但是Boost.Coroutine
已经被废弃了,而Boost.Coroutine2
目前只有非对称的协程支持,个人感觉并不是特别具有使用的价值。而C++20
中的协程,IDE对其的支持并不是特别好,代码报错异常多,因此我打算在完全摸透后再考虑写这一部分的内容。
Boost.Array
目前来说,和之前的Boost.Random
一样,都进入了C++11
的标准中。因此,其作者推荐如果使用了C++11
,那么最好使用标准库中的Array
而不是Boost
中的。而本文虽然主要介绍Boost.Array
,但是也会对C++11
中的进行一些讲解,同时对他们进行对比。
Boost.Array
的提出,主要是因为在当时,STL中并没有一个具有C++
风格的,固定大小的容器。如果需要使用一种类似于C语言中数组的容器,开发者一般会直接使用C语言中的数组或者是使用std::vector
。而C中的数组对于C++来说,略显不优雅;而std::vector
由于是动态的,相对来说性能上会有不必要的损失,也没办法在模板中使用(C++20中,std::vector
可以使用在模板中,而且支持大部分的函数)。
使用
Boost.Array
是一个模板,需要两个模板参数,分别是数据的类型和数组的大小。
boost::array<int, 1024> temp_array;
由于是模板参数,所以数组的大小必须是一个可以在编译阶段就可以推理得到的值。定义以后,就可以正常使用了。其使用方法和std::vector
较类似。
// 使用某个数字填满
temp_array.fill(1);
// 迭代
for (auto temp_iter = temp_array.begin(); temp_iter != temp_array.end(); ++temp_iter) {
*temp_iter = 2;
}
// 取某个元素
std::cout << temp_array[2] << " " << temp_array.at(3) << std::endl;
// foreach
int sum_array = 0;
for (auto temp_item : temp_array) {
sum_array += temp_item;
}
std::cout << sum_array << std::endl;
// 逆序遍历
for (auto temp_iter = temp_array.rbegin(); temp_iter != temp_array.rend(); ++temp_iter) {
*temp_iter = (temp_iter - temp_array.rbegin());
}
std::cout << temp_array[10] << std::endl;
// 一些属性
std::cout << temp_array.size() << " " << temp_array.max_size() << " " << temp_array.empty() << std::endl;
其中,size
和max_size
只返回数组的大小。而empty
只在数组大小为0时返回false
,在其他时候返回true
。
Boost和STL的区别
STL
中的Array
在高版本的C++中,会支持更多的constexpr
,如果使用在模板中会更加的方便。
为了支持更低版本的C++,Boost
使用了模板偏特化来处理数组大小为0的情况。
Boost
中有一个assign
函数,功能和fill
一样,但是STL
中没有。
原博客地址:https://www.cnblogs.com/ink19/p/Boost_Array.html
Array的简单使用(Boost和STL通用)的更多相关文章
- Boost随机库的简单使用:Boost.Random(STL通用)
文章目录 文章目录 文章内容介绍 Boost随机库的简单使用 生成一个随机的整数 生成一个区间的平均概率随机数 按概率生成一个区间的随机整数 一些经典的分布 与STL的对比 Ref 文章内容介绍 Bo ...
- Boost 和 STL 相比有哪些优势和劣势?
1. 在设计原则上,STL和Boost大体统一因为STL和Boost基本上都是标准委员会那批人在策划.审核和维护,所以口味上是相对接近的.但是因为Boost并不在标准中,或者说是下一代标准的试验场,所 ...
- Codeforces 754A Lesha and array splitting(简单贪心)
A. Lesha and array splitting time limit per test:2 seconds memory limit per test:256 megabytes input ...
- HDU - 6197:array array array (简单LIS)
One day, Kaitou Kiddo had stolen a priceless diamond ring. But detective Conan blocked Kiddo's path ...
- Codeforces Round #258 (Div. 2) B. Sort the Array(简单题)
题目链接:http://codeforces.com/contest/451/problem/B --------------------------------------------------- ...
- Java简单实现AOP,Java通用异常拦截,Java与Lamada
直接看代码不废话.不懂Lamada直接百度... package test; /** * QQ:1448376744 * @author 花间岛 * */ //控制器 public class Con ...
- boost array使用
#include <iostream> #include<boost/array.hpp> int main() { boost::array<int, 6> ar ...
- #include <boost/array.hpp>
Boost的array,元素可以是std::string #include <iostream> #include <string> #include <boost/ar ...
- STL在算法比赛中简单应用
STL基础 和 简单的贪心问题 STL(Standard Template Library) 即 标准模板库. 它包含了诸多在计算机科学领域里所常用的基本数据结构和算法.这些数据结构可以与标准算法一起 ...
随机推荐
- Python学习笔记5:模块/包
1.模块 模块简单理解就是一组功能的集合. 在Python中,一个文件(.py)就是一个模块,文件名即模块名. 模块的好处是大大提高代码的可维护性,其次,代码不必从零开始.当一个模块编写完毕,就可以被 ...
- Java入门基础知识点总结(详细篇)
Java入门基础知识点总结(详细篇)~~~~~目录 1.1 图解 1.1.1 Java基础知识点 1.1.2 Java基础语法的相关内容 1.2 关键字 1.3 标识符 1.3.1 标识符概念 1.3 ...
- sublime 3 phpfmt配置(大括号对齐)
默认选项: default: phpfmt.sublime-settings: { "version": 2, "php ...
- go返回json数据
package main import ( "encoding/json" ) type Repay struct { Code uint64 `json:"code&q ...
- 2020阿里,字节跳动,JAVA岗(一线企业校招、社招)面试题合集
前言 以下面试题全属于一线大厂社招以及校招的面试真题,各位在做这些题目对照自己的时候请平凡心对待,不要信心受挫.其实 做为致力于一线企业校招或者社招的你来说,能把每个知识模块的一小部分问题去深入学习和 ...
- 2个快速制作完成一幅思维导图的iMindMap思维导图用法
随着思维导图的流行,与其相关的思维导图制作软件如雨后春笋,纷纷进入我们的视野中,更让人难以选择.那想要入门的萌新该如何开始这个新的旅途呢? 各式各样的思维导图制作软件当中,有一个软件得到了大家一致的好 ...
- Java IDEA 根据mybatis-generator-core自动生成代码支持sqlserver获取备注(二)
mybatis generator代码生成虽然好用,但是好像不支持sqlserver获取备注信息,这里我主要分享mybatis generator改写后支持sqlserver获取备注信息,mysql以 ...
- DIV设置滚动条在最底端
网站聊天样式,无论添加什么内容div的滚动条都显示在最底端 将div添加滚动条,给div一定的高度 <div id='up' style='height:100px; width:400px;o ...
- appium元素定位工具
appium元素定位工具介绍 使用uiautomatorviewer定位工具 使用Appium Inspector定位工具 使用uiautomatorviewer定位工具 谷歌在Android S ...
- Kafka入门之broker-消息设计
消息设计 1.消息格式 Kafka的实现方式本质上是使用java NIO的ByteBuffer来保存消息,同时依赖文件系统提供的页缓存机制,而非依靠java的堆缓存. 2.版本变迁 0.11.0.0版 ...