参考:

  1. https://blog.csdn.net/lixiaogang_theanswer/article/details/72588105
  2. http://c.biancheng.net/view/681.html

1. iota() 函数

  • C++中 iota() 是用来批量递增赋值vector的元素的。
    示例:
#include <iostream>
#include <numeric>    //iota头文件
using namespace std;
void func()
{vector<int> v(10);iota(v.begin(),v.end(),1);vector<int>::iterator it = v.begin();while(it != v.end()){cout<<*it++<<" ";}
}结果:
1   2   3   4   5   6   7   8   9   10
  • 定义在 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 的连续值。

  • 当然,初始值并不需要一定是整数:
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 开头的字符序列。这个示例发生了什么并不是那么明显:

std::vector<string> words (8);
std::iota(std::begin(words), std::end(words), "mysterious");
std::copy(std::begin(words), std::end(words),std::ostream_iterator<string>{std::cout, " "});
std::cout << std::endl;
// mysterious ysterious sterious terious erious rious ious ous

输出如注释所示。这是该算法的一个有趣应用,但没有什么用处。这只适用于第三个参数是一个字符串常量的情形。如果参数是 string{“mysterious”},将无法通过编译,因为没有为 string 类定义 operator++()。字符串常量对应的值是一个 const char* 类型的指针,可以将 ++ 运算符应用到它上面。因此对于 words 中第一个元素后的每个元素,指针的递增会导致字符串常量前面的字母被丢弃。将 ++ 应用到指针的结果是生成一个 string 对象,然后它会被保存到当前的元素序列中。

  • 只要 ++ 可以应用到序列中的元素类型上,就能将 iota() 算法应用到序列上。
  • 注意:很有趣的是,iota() 算法来源于 IBM 的编程语言 APL 中的 iota 运算符 ι。在 APL 中,表达式 ι10 会生成从 1 到 10 的整数的 vector。APL 是肯•艾弗森在 20 世纪 60 年代发明的。它是一门相当筒洁的语言,能够隐式处理 vector 和数组。APL 的一个完整程序会从键盘读取任意个值,计算出它们的平均值,然后输出被表示为 10 个字符结果。

2. atoi() 函数

  • atoi() 函数的功能是将字符串转换成整数(int)。
  • 这两个函数名字很相似,容易混淆,注意区分;一个在用在c++的STL中,一个是用在c中。
#include <stdlib.h>
int atoi(const char *str);
  • 功能:atoi() 会扫描str字符串,跳过前面的空格字符,直到遇到数字或正负号才开始做转换,而遇到非数字或字符串结束符(’\0’)才结束转换,并将结果返回返回值。
  • 参数:
    str:待转换的字符串
    【返回值】返回转换后的整型数;如果 str 不能转换成 int 或者 str 为空字符串,那么将返回 0
  • 示例:
void func()
{char str1[] = "-10";int num1 = atoi(str1);printf("num1 = %d\n", num1);
}//结果:
num1 = -10而 char str1[] = "abc-1100def";结果是: num1 = 0

【C++】之 iota() 函数与 atoi() 函数详解相关推荐

  1. 在python中使用关键字define定义函数_python自定义函数def的应用详解

    这里是三岁,来和大家唠唠自定义函数,这一个神奇的东西,带大家白话玩转自定义函数 自定义函数,编程里面的精髓! def 自定义函数的必要函数:def 使用方法:def 函数名(参数1,参数2,参数-): ...

  2. 函数assert()详解

    函数assert()详解: 断言assert是一个宏,该宏在<assert>中,,当使用assert时候,给他个参数,即一个判读为真的表达式.预处理器产生测试该断言的代码,如果断言不为真, ...

  3. php。defined,PHP defined()函数的使用图文详解

    PHP defined()函数的使用图文详解 PHP defined() 函数 例子 定义和用法 defined() 函数检查某常量是否存在. 若常量存在,则返回 true,否则返回 false. 语 ...

  4. python中tile的用法_python3中numpy函数tile的用法详解

    tile函数位于python模块 numpy.lib.shape_base中,他的功能是重复某个数组.比如tile(A,n),功能是将数组A重复n次,构成一个新的数组,我们还是使用具体的例子来说明问题 ...

  5. Delphi Format函数功能及用法详解

    DELPHI中Format函数功能及用法详解 DELPHI中Format函数功能及用法详解function Format(const Format: string; const Args: array ...

  6. python中的json函数_python中装饰器、内置函数、json的详解

    装饰器 装饰器本质上是一个Python函数,它可以让其他函数在不需要做任何代码变动的前提下增加额外功能,装饰器的返回值也是一个函数对象. 先看简单例子: def run(): time.sleep(1 ...

  7. 如何使用指向类的成员函数的指针(详解!)

    原文:如何使用指向类的成员函数的指针(详解!) 另外一篇英文参考:Member Function Pointers and the Fastest Possible C++ Delegates 我们首 ...

  8. php时间函数引入,PHP日期和时间函数的使用示例详解

    (1)查看日期函数拓展 phpinfo() phpinfo(); 打开上述页面之后,可以看到以下,证明已经安装日期拓展 浏览器输入php.net访问php的文档 (2)设置时区 方式一:修改配置文件p ...

  9. python def函数报错详解_python自定义函数def的应用详解

    这篇文章主要介绍了python自定义函数def的应用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 这里是三岁,来和大家唠唠 ...

  10. PHP函数call_user_func和call_user_func_array详解

    今天在群里面,有个叫lewis的在问call_user_func_array的用法,因为之前一直没有用过,也不能说什么,于是看一下手册,发现是这么写的: call_user_func_array (P ...

最新文章

  1. Spark Streaming 编程新手入门指南
  2. VMWare虚拟机转换成KVM
  3. element实现动态路由+面包屑
  4. Django登陆以后重定向到请求登陆的页面
  5. ubuntu iptables 共享上网
  6. 从Java Web 基础看SSH架构
  7. 掌握通过计算机实现香农编码,信息论编码实验二香农编码
  8. 基于用户标签的时间衰减因子
  9. 有道词典“网络已断开”的解决办法
  10. 今天你对我爱搭不理, 明天我让你高攀不起
  11. oracle如何删除用户的表空间,Oracle 删除用户和表空间
  12. 西游记中牛魔王的雄厚实力和家业地盘
  13. 【手把手】JavaWeb 入门级项目实战 -- 文章发布系统 (第六节)
  14. 讲清MVC、MVP、MVVM,看这一篇文章就够了
  15. 分享一个ESP32中继
  16. tf.keras.layers.Layer自定义层
  17. 使用Python+OpenCV+Tensorflow+Flask实现检测X光图像中的COVID-19(新冠病毒)
  18. WPF入门教程详解1——label、TextBlock、Button、Border、RadioButton、CheckBox、 数据绑定、案例、ToolTip、GroupBox、Expand、Fram
  19. 软工1816 · 团队现场编程实战(抽奖系统)
  20. 阿里面试官的”说一下从url输入到返回请求的过程“问的难度就是不一样!

热门文章

  1. 利用orange进行关联规则挖掘
  2. python函数打上去说未定义_Python:名称未定义错误,即使函数被明确定义为b
  3. cocoscreator 发布抖音小游戏
  4. Linux的help命令的使用详解
  5. 计算机教师专业提升目标,信息技术促进教师专业发展的研究
  6. 可能导致Android手机死机的原因
  7. 【漏洞复现】CNVD-2022-10270向日葵远程代码执行
  8. Web前端————微博主页模仿
  9. 吐血整理,rabbitmp超简单下载安装
  10. 物联网如何变革包装行业