c++中使用memset初始化具有不同值的struct数组元素
initialize struct array element with different value using memset in c++
在c++中,
struct info
{
int lazy,sum;
}tree[4*mx];
初始化:
memset(tree,0,sizeof(tree))
意思是
tree[0].sum is 0 and tree[0].lazy is 0 ...and so on.
现在我想初始化不同的值,像这样:
tree[0].sum is 0 and tree[0].lazy is -1 .... and so on.
In For循环
for(int i=0;i<n;i++) // where n is array size
{
tree[i].sum=0;
tree[i].lazy=-1;
}
,但在memset函数我不能初始化结构数组与不同的值。这可能吗?
传递给memset
的值是初始化给定地址范围的每个字节的值。
memset -将ptr所指向的内存块的前num字节设置为
这样,你就不能实现你想要的。
这就是构造函数的作用:struct info
{
int lazy,sum;
info() : lazy(-1), sum(0) {}
} tree[4*mx];
// no need to call memset
或者您可以创建结构体的模式并将其设置为tree
的每个元素:
#include <algorithm>
struct info
{
int lazy,sum;
} tree[4];
info pattern;
pattern.lazy = -1;
pattern.sum = 0;
std::fill_n(tree, sizeof(tree)/sizeof(*tree), pattern);
相关文章:
- 数组元素打印的递归方法
- 如何将字节数组元素替换为修改的十六进制 ASCII 符号?
- 为什么使用数组元素查找最大数字的程序不起作用?
- 数组元素更改值?
- 如何访问宏中定义的数组元素
- 将数组元素递增 1
- C++函数,它将数组、谓词和运算符作为参数,并将运算符应用于满足谓词的数组元素
- 存储指向动态数组元素的指针
- C++通过别名指针以静默方式将错误的类型分配给数组元素
- 在 std::map 中插入数组元素
- 使用指针访问数组元素时出现意外结果
- c++ 使用动态分配运算符反向数组元素
- 为什么在 c++ 中分配 char 数组元素时,分配的字符会被销毁?
- 缺少数组元素问题
- 如何在类中制作 2D 数组元素,然后在其构造函数中指定其维度?
- 创建一个函数来转换数组元素的类型并返回数组的地址
- 删除在结构 c++ 中声明的数组元素
- Getter 和 Setter 用于类 C++ 中的数组元素
- 尝试递归获取数组元素的总和
- c++中使用memset初始化具有不同值的struct数组元素