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>
using namespace 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-,count,paint);
for_each(V.begin(),V.end(),print);
cout<<endl;
}
return ;
}

其他的一些实例:

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=(<<)--(<<)-(<<)-(<<);
int c[];
memset(c,0x7f,sizeof(c));
printf("%0x\n",maxn); //7f7f7f
printf("%0x\n",c[]);//7f7f7f

结果都是 :0x7f7f7f由此说明memset的操作方式。

我们也可以根据该特性:来定义一个无穷大:

有符号整形的最大值:

max_int= 2147483647,也就是:(1<<31)-1

而0x7f7f7f=2139062143

eg:因此我们可以这样给数组初始化无穷大:memset(array,0x7f,sizeof(array));

【转】c++ 如何批量初始化数组 fill和fill_n函数的应用的更多相关文章

  1. c++ 批量初始化数组 fill和fill_n函数的应用

    转自c++ 如何批量初始化数组 fill和fill_n函数的应用 std::fill(a+,a+,0x3f3f3f3f);///从下标2到下标10 前闭后开 共8个 std::fill_n(a+,,0 ...

  2. 批量初始化数组和memset函数

    对于数组的初始化有一下三种方式: int  a[]={1,2,3,4,5} //通过判断初始化值得个数来却仍数组长度 int b[5]={1,2,3} //数组长度为5,可是初始值却只有三个,因此,不 ...

  3. memset初始化数组的问题

    今天才搞清楚,memset用于初始化数组,仅能初始化为0值,而不能初始化一个特定的值,这怎么能模糊了呢??? 因此,如果对申请的一段存放数组的内存进行初始化,每个数组元素均初始化为特定的值,必须使用循 ...

  4. c#清空数组&初始化数组&动态数组

    清空数组>>>Array.Clear [去MSDN查看] ]; ; i < str.Length; i++) str[i] = i.ToString(); Array.Clea ...

  5. PHP5.2 $arr = [] 初始化数组出现问题

    初始化数组  $arr=[] ,出现问题,使用 $arr = array() ,一切正常

  6. Java自学-数组 初始化数组

    Java 如何初始化数组 步骤 1 : 分配空间与赋值分步进行 public class HelloWorld { public static void main(String[] args) { i ...

  7. memset初始化数组的坑

    memset函数常被我们用来初始化数组,然而有个坑可能会被我们踩到. 静态数组初始化 一般情形是这样的: #include <cstring> int main() { // 静态数组ar ...

  8. memset 初始化数组 & 实现原理

    初始化数组可不必使用n重for循环. 原理 memset具有初始化数组的功能,能够初始化数组中的每一个值. 它是将数组中的每一个数的二进制的每一个字节初始化的. 比如初始化int类型的a数组:mems ...

  9. fill函数和fill_n函数

    fill_n函数的作用是:给你一个起始点,然后再给你一个数值count和val.把从起始点开始依次赋予count个元素val的值. 注意: 不能在没有元素的空容器上调用fill_n函数 列子:     ...

随机推荐

  1. vue 高度 动态更新计算 calcHeight watch $route

    vue 高度 动态更新计算 calcHeight () { // this.tableHeight = window.innerHeight - 210 } }, mounted () { // co ...

  2. String s = “1a2a3a4a” 解码为 “1234”

    将字符串 String s = “1a2a3a4a”  解码为 “1234” public class Program2 { public static void main(String[] args ...

  3. 计算机网络之TCP拥塞控制

    1. 首先,拥塞控制和流量控制是不一样的. 拥塞控制是防止过多的数据注入到网络中,可以使网络中的路由器或链路不致过载,是一个全局性的过程.  流量控制是点对点通信量的控制,是一个端到端的问题,主要就是 ...

  4. [模板] LIS

    树状数组优化LIS到nlogn,网上找了好多,感觉讲得都不是很明白,正好自己复习整理一下. 基本的DP方程 f[i]=max(f[i],f[j]+1) (j<i且a[j]<a[i]) 定义 ...

  5. mysql踩坑

    com.mysql.cj.core.exceptions.InvalidConnectionAttributeException: The server time zone value '****** ...

  6. 【JDBC-MVC模式】开发实例

    JDBC - 开发实例-MVC模式  1. 在web.xml中配置连接数据库的信息 web.xml: <context-param> <param-name>server< ...

  7. Tomcat server.xml配置文件

    server.xml配置文件: <?xml version="1.0" encoding="UTF-8"?> <!-- Licensed to ...

  8. CTO俱乐部官方群聊-探讨创业和跳槽

     今天,CTO俱乐部官方群,有交流,若干活跃分子探讨了创业和跳槽等相关话题. 感觉质量很不错,就整理了下. 老徐 17:02:00  跳来跳去也不是长久之计,除了涨点工资   张苗苗 17:02:46 ...

  9. 转载:better-scroll的相关api

    格式:var obj = new BScroll(object,{[option1,],.,.}); 注意:1.要确保object元素的高度比其父元素高 2.使用时,一定要确保object所在的dom ...

  10. Java学习之理解递归

    Java支持递归.递归是根据自身定义内容的过程.就Java编程而言,递归是一个允许方法调用自身的特性.调用自身的方法被称为递归.典型的例子就是阶乘的计算,N的阶乘就是从1到N之间所有整数的乘积. 当方 ...