C++初始化问题fill()、memset()函数和图初始化

一、fill()函数

  1. 按照单元赋值,将一个区间的元素都赋同一个值
  2. 在头文件里面
  3. fill函数可以赋任何值,使用方法:
fill(arr, arr + n, 要填入的内容)

//int数组
#include <cstdio>
#include <algorithm>
using namespace std;
int main() {
    int arr[10];
    fill(arr, arr + 10, 2);
    return 0;
}

//vector
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int main() {
    vector<int> v{0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
    fill(v.begin(), v.end(), -1);
    return 0;
}  

二、memset()函数

  1. 按照字节填充
  2. 在头文件里面
  3. 因为是按照字节填充,所以一般memset只能用来填充char数组(因为char数组只占一个字节)如果填充int型数组,除了0和-1,其他都不能。因为只有00000000=0,-1同理,如果把每一位都填充为1,会导致变成填充11111111.
  4. 使用方法:
//memset()使用方法
#include <iostream>
#include <cstring>
using namespace std;
int main(){
    int a[20];
    memset(a, 0, sizeof(a));
    return 0;
}

三、图的初始化

  • 根据以上总结,推荐使用fill函数,简单使用范围广。
  1. 如果是使用邻接矩阵,那么根据题目要求来,有时候是在定义的时候进行初始化,全部初始化为0;
  2. 有时候是通过fill函数进行填充初始化,fill(G[0], G[0] + maxn*maxn, INF);
  3. 如果是邻接表,就不需要初始化了。

原文地址:https://www.cnblogs.com/tsruixi/p/12388363.html

时间: 2024-11-29 03:08:23

C++初始化问题fill()、memset()函数和图初始化的相关文章

C/C++中memset函数

本文学习参考http://baike.baidu.com/link?url=ZmSyY8ciB_nJt9KM-W2fiEFJrC2mugFsLqRdY2b4pLe8rD_jRXyN7_pj0GBBD2bKyt6Xm-lpUlAO97H94dUYXa 1.memset函数的声明和含义如下: 函数解释:将s所指向的某一块内存中的前n个字节的内容全部设置为 ch 指定的 ASCII值, 第一个值为指定的内存地址,块的大小由第三个参数指定,这个函数通常为新申请的内存做初始化工作, 其返回值为指向s的指针

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

转自c++ 如何批量初始化数组 fill和fill_n函数的应用 std::fill(a+2,a+10,0x3f3f3f3f);///从下标2到下标10 前闭后开 共8个 std::fill_n(a+2,10,0x3f3f3f3f);///从下标2 开始 填充10个 memset(a,0x7f7f7f7f,sizeof(a)); 一. fill和fill_n函数的应用: fill函数的作用是:将一个区间的元素都赋予val值. 函数参数:fill(first,last,val);//first为容

【转】c++ 如何批量初始化数组 fill和fill_n函数的应用

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(

【C++】fill函数,fill与memset函数的区别

memset函数 按照字节填充某字符 在头文件<cstring>里面 fill函数 按照单元赋值,将一个区间的元素都赋同一个值 在头文件<algorithm>里面 因为memset函数按照字节填充,所以一般memset只能用来填充char型数组,(因为只有char型占一个字节)如果填充int型数组,除了0和-1,其他的不能.因为只有00000000 = 0,-1同理,如果我们把每一位都填充“1”,会导致变成填充入“11111111” 而fill函数可以赋值任何,而且使用方法特别简便

关于memset() 函数的使用

第一次接触了memset() 函数. 感觉的确是一个能够高效的实现对一个array 进行一次性初始化的fancy way. 下面给出介绍: memset() 函数定义在头文件<<cstring>>中, prototype 如下: void * memset ( void * ptr, int ch, size_t num ); 函数的作用是: fill the first num bytes(注意不是element) of block of memory(由空指针ptr指向) wi

memset()函数

1. memset()函数原型是extern void *memset(void *buffer, int c, int count)        buffer:为指针或是数组, c:是赋给buffer的值, count:是buffer的长度. 这个函数在socket中多用于清空数组.如:原型是memset(buffer, 0, sizeof(buffer)) Memset 用来对一段内存空间全部设置为某个字符,一般用在对定义的字符串进行初始化为' '或'/0': 例:char a[100];

透彻分析C/C++中memset函数

原文:http://blog.csdn.net/dan15188387481/article/details/49621447 在C语言中,经常需要对内存进行操作,里面涉及很多函数,但是memset函数的使用有一点需要大家格外注意,这也是我在做项目时遇到过的一个问题,调试了很久才找出来错误. 函数原型是:void *memset(void *s, int ch, size_t n); 函数功能是:将s所指向的某一块内存中的前n个字节的内容全部设置为ch指定的ASCII值, 第一个值为指定的内存地

memset函数

常见错误: 第一: 搞反了 ch 和 n 的位置. 一定要记住如果要把一个char a[20]清零,一定是 memset(a,0,20);而不是 memset(a,20,0); 第二: 过度使用memset,我想这些程序员可能有某种心理阴影,他们惧怕未经初始化的内存,所以他们会写出这样的代码: 这里的memset是多余的. 因为这块内存马上就被全部覆盖,清零没有意义. 另:以下情况并不多余,因某些编译器分配空间时,内存中默认值并不为0: 第三: 其实这个错误严格来讲不能算用错memset,但是它

memset函数具体说明

1.void *memset(void *s,int c,size_t n)总的作用:将已开辟内存空间 s 的首 n 个字节的值设为值 c. 2.样例#include void main(){char *s="Golden Global View"; clrscr(); memset(s,'G',6);printf("%s",s); getchar();return 0;} 3.memset() 函数经常使用于内存空间初始化.如:char str[100];mems