该函数是C++11 才引入,之前版本没有此函数。

iota 函数是一个计算机语言中的函数,用于产生连续的值。该函数得名自 APL 语言,其中用来产生从 1 开始的连续数值。

该函数位于头文件#include <numeric>中。

定义在 numeric 头文件中的 iota() 函数模板会用连续的 T 类型值填充序列。前两个参数是定义序列的正向迭代器,第三个参数是初始的 T 值。第三个指定的值会被保存到序列的第一个元素中。保存在第一个元素后的值是通过对前面的值运用自增运算符得到的。当然,这意味着 T 类型必须支持 operator++()。下面展示了如何生成一个有连续的浮点值元素的 vector 容器:

std::vector<double> data(9);
double initial {-4};
std::iota (std::begin (data) , std::end (data) , initial);
std::copy(std::begin(data), std::end(data),std::ostream_iterator<double>{std::cout<< std::fixed << std::setprecision(1), " "});
std::cout << std::endl;  // -4.0 -3.0 -2.0 -1.0 0.0 1.0 2.0 3.0 4.0

以 4 为初始值调用 iota() 会将 data 中元素的值设为从 -4 到 +4 的连续值即(iota用一个从value递增的数列给[first, last)或者[begin,end]的容器赋值。)。当然,初始值并不需要一定是整数:

std::iota(std::begin(data), std::end(data), -2.5);
// Values are -2.5 -1.5 -0.5 0.5 1.5 2.5 3.5 4.5 5.5

增量是 1,因此 data 中的值和注释显示的一样。可以将 iota() 算法应用到任意类型的序列上,只要它有自增运算符。下面是另一个示例:

string text {"This is text"};
std::iota(std::begin(text), std::end(text), 'K');
std::cout << text << std::endl;   // Outputs: KLMNOPQRSTUV

很容易看到输出如注释所示,字符串中的字符被设为以 K 开头的字符序列。这个示例发生了什么并不是那么明显。

完整代码示例:

#include <iostream>
#include <vector>
#include <numeric>
int main()
{std::vector<int> nums(10);for (int i : nums) {std::cout <<"uninitialized=" <<i << "\t";}std::cout << std::endl;//整行输出完,再最后换行std::iota(nums.begin(), nums.end(), 5); // fill nums with 5, 6, 7, 8...for (int i : nums){std::cout <<"initialized="<< i << "\t";}std::cout << std::endl;//整行输出完,再最后换行system("pause");return 0;
}

输出结果:

参考博客:https://www.jianshu.com/p/ffdb4c681392

C++11 :STL中的 iota ()函数相关推荐

  1. C++STL中的unique函数解析

    一.总述 unique函数属于STL中比较常用函数,它的功能是元素去重.即"删除"序列中所有相邻的重复元素(只保留一个).此处的删除,并不是真的删除,而是指重复元素的位置被不重复的 ...

  2. c++STL中的find()函数 有两种使用方法

    c++STL中的find()函数 有两种使用方法 方法一: 开头引头文件:中的函数 其调用形式为 find(start,end,value) start搜寻的起点,end搜寻的终点,要寻找的value ...

  3. STL中的unique函数

    unique是STL中一个比较实用而且非常常用的函数之一了: 作用就是容器或数组去重,但是并不是完全的去重:它只是把重复的元素放在了容器的后面,而且去重前一定要先排序: 头文件:#include< ...

  4. STL中的for_each()函数

    for_each()函数是C++ STL中的一个遍历函数,函数原型如下: for_each(InputIterator first, InputIterator last, Function func ...

  5. c语言asinh函数,C ++ STL中的asinh()函数

    该asinh()函数返回弧度的双曲正弦或反双曲正弦.它是C ++ STL中的内置函数. 该asinh()函数的语法如下.asinh(var) 从语法可以看出,该函数asinh()接受数据类型为floa ...

  6. c语言exp2是什么函数,C ++ STL中的exp2()函数

    在本文中,我们将讨论C ++ STL中用于复数的std::exp2()函数的工作,语法和示例. 什么是std::exp2()? 用于复数的std::exp2()函数是C ++ STL中的内置函数,该函 ...

  7. c语言tanh函数,C ++ STL中的tanh()函数

    该tanh()函数返回以弧度给出的角度的双曲正切值.它是C ++ STL中的内置函数. 该tanh()函数的语法如下.tanh(var) 从语法可以看出,该函数tanh()接受数据类型为float,d ...

  8. STL中的find_if函数

    这是find()的一个更强大的版本.这个例子演示了find_if(),它接收一个函数对象的参数作为参数, 并使用它来做更复杂的评价对象是否和给出的查找条件相付. 假设我们的list中有一些按年代排列的 ...

  9. 为什么map对象不能使用stl中的sort函数

    STL所提供的各式各样算法中,sort()是最复杂最庞大的一个.这个算法接受两个RandomAccestlerators(随机存取迭代器),然后将区间内的所有元素以渐增方式由小到大重新排列.第二个版本 ...

最新文章

  1. Linux Shell脚本之向脚本传递参数
  2. libiconv2.dll
  3. 给计算机图片文件夹加密码,电脑文件夹设置密码的方法是什么【图文】
  4. 有关linux下redis overcommit_memory的问题,以及导致的:Cannot allocate memory问题
  5. java weblogic连接池,Weblogic JNDI 方式连接连接池 (工作中遇到的问题)
  6. 国服服务器_《Minecraft我的世界》第三方服务器的基本储备
  7. 从linux使用sz命令下载大于4g的文件到windows
  8. 慕有轶:看不清的方向,你还在盲目操作,犹如飞蛾扑火!
  9. html5妇女节游戏,2018三八妇女节趣味游戏大全
  10. iic总线的仲裁机制_iic总线
  11. 小米高级交互设计师:产品设计的八个原则
  12. InputStream 、FileInputStream、InputStreamReader 、BufferedReader的区别
  13. ir-keytable + lirc 红外控制开关机及程序运行 armbian搞机篇
  14. caffe中loss函数代码分析--caffe学习(16)
  15. 23种设计模式-观察者模式
  16. 第5章 以太网与FlexRay
  17. 社区疫情防控的微信公众号文章排版必备素材集锦
  18. 发布java包运行提示找不到配置文件
  19. 2022-04-28:有 n 个城市通过一些航班连接。给你一个数组 flights ,其中 flights[i] = [fromi, toi, pricei] ,表示该航班都从城市 fromi 开始,
  20. 不要再问Python了!

热门文章

  1. 2021年大数据Spark(十二):Spark Core的RDD详解
  2. git push 时不用每次都输入密码的方法
  3. HarmonyOS 设置图标在Text 旁边
  4. ps -ef 的含义
  5. 微信小程序顶部tab切换以及滑动
  6. error: No resource identifier found for attribute 'showAsAction' in package 'com.ymeng.项目名字'
  7. 2022-2028年中国胶片手套行业市场研究及前瞻分析报告
  8. Go 学习笔记(13)— 指针定义、指针特点、空指针、指针数组、指向指针的指针、指针作为函数入参
  9. jquery checkbox勾选/取消勾选的诡异问题
  10. MySql按日期进行统计(前一天、本周、某一天)[转载]