memsetとfill、memsetを慎み、一般的にfillを使う


概要:fill()とmenset()の両者は等しいように見えますが、両者には大きな違いがあります.fill()では、そのユニットを指定した値、すなわち任意の値に割り当てるのが原理ですが、memset()では、sが指すメモリの各バイトの内容をchで指定したASCII値に設定します.
一:memset:void*memset(void*s,int c,size_t n)の全体的な役割:メモリ空間sを開いた最初のnバイトの値を値cに設定する.例:1.memset(dis,255,sizeof(dis)); 前sizeof(dis)バイトの空間賦値を-1(255の補符号は-1であり、コンピュータは補符号で数字を表す)2.memset(dis,0,sizeof(dis))とする.前sizeof(dis)バイトの空間を0 3.memset(dis,-1,sizeof(dis))に割り当てる.前sizeof(dis)バイトの空間賦値は-14.memset(dis,127,sizeof(dis))である.前sizeof(dis)バイトの空間賦値を2139062143にまとめるとmemsetは慎み、一般的にゼロクリアや-1(-2はだめ、負数は-1以外はだめ)https://blog.csdn.net/qq_42592097/article/details/81947072 https://blog.csdn.net/hk121/article/details/81096388 https://baike.baidu.com/item/memset/4747579?fr=aladdin
二:fill:fill()関数パラメータ:fill(first,last,val);//firstはコンテナの最初の反復器、lastはコンテナの最後の反復器、valは置換する値です.
int a[200];
fill(a, a+100, 1);
fill(aa.begin(), aa.end(), 2);

注意:fill()では、そのユニットを指定した値、すなわち任意の値に割り当てるのが原理です.memset()は、sが指すメモリの1バイトあたりの内容をchで指定したASCII値、すなわち0、1に設定します.https://blog.csdn.net/weixin_40799076/article/details/84532083 https://blog.csdn.net/yujin753/article/details/41487181 https://blog.csdn.net/g19ly/article/details/75245055