【转】c++ 如何批量初始化数组 fill和fill_n函数的应用
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了【转】c++ 如何批量初始化数组 fill和fill_n函数的应用,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1602字,纯文字阅读大概需要3分钟。
内容图文
http://blog.csdn.net/sunquana/article/details/9153213
一、 fill和fill_n函数的应用:
fill函数的作用是:将一个区间的元素都赋予val值。
函数参数:fill(first,last,val);//first为容器的首迭代器,last为容器的尾迭代器,
替换元素的区间为[first,last),val为将要替换的值。
eg:
vector <int> V;
fill(V.begin(),V.end(),val);
二、fill_n函数的作用是:
给你一个起始点,然后再给你一个数值count和val。把从起始点开始依次赋予 count个元素val的值。
注意: 不能在没有元素的空容器上调用fill_n函数。
例题:给你n个数,然后输入一些操作:start,count,paint。表示从start开始连续填充count个数字,paint为填充的数值。
#include <iostream> #include <algorithm> #include <vector> usingnamespace std; void print(int &elem){cout<<elem<<"";} int main() { vector <int> V; int n,start,count,paint; cin>>n; V.resize(n); while(cin>>start>>count>>paint) { fill_n(V.begin()+start-1,count,paint); for_each(V.begin(),V.end(),print); cout<<endl; } return0; }
其他的一些实例:
vector<int> myvector (8,10); // myvector: 10 10 10 10 10 10 10 10
fill_n (myvector.begin(),4,20); // myvector: 20 20 20 20 10 10 10 10
fill_n (myvector.begin()+3,3,33); // myvector: 20 20 20 33 33 33 10 10
三、关于memset()函数:
这个 函数是按字节覆盖,批量初始化内存空间,下面我们来看一个例子:
// 注意移位运算的优先级小于 + unsigned int maxn=(1<<31)-1-(1<<7)-(1<<15)-(1<<23); int c[2]; memset(c,0x7f,sizeof(c)); printf("%0x\n",maxn); //7f7f7f printf("%0x\n",c[0]);//7f7f7f
结果都是 :0x7f7f7f由此说明memset的操作方式。
我们也可以根据该特性:来定义一个无穷大:
有符号整形的最大值:
max_int= 2147483647,也就是:(1<<31)-1
而0x7f7f7f=2139062143
eg:因此我们可以这样给数组初始化无穷大:memset(array,0x7f,sizeof(array));
原文:http://www.cnblogs.com/ljygoodgoodstudydaydayup/p/3854571.html
内容总结
以上是互联网集市为您收集整理的【转】c++ 如何批量初始化数组 fill和fill_n函数的应用全部内容,希望文章能够帮你解决【转】c++ 如何批量初始化数组 fill和fill_n函数的应用所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。