我在声明和初始化具有自定义类型的数组时遇到困难。
我想要使用自定义数据类型的数组的声明和初始化。
我的自定义数据类型如下:
struct Node
{
long long data;
int count;
std::string name;
Node *left, *right;
Node(long long data, int count, std::string name): data(data), count(count), name(name), left(nullptr), right(nullptr) {}
};
现在,我在这里尝试几种不起作用的方法。
Node nodes[100] = {Node(0,0,"unknown")};
或者,
Node nodes[100](Node(0,0,"unknown"));
或者,
Node nodes[100]{Node(0,0,"unknown")};
有人可以帮我吗?在C ++中应该使用什么正确的符号?最终结果应该是要使用 (0,0,“ unknown”) 初始化的所有数组。
答案 0 :(得分:1)
您的成员的默认值应该会有所帮助:
apply(expand.grid(lapply(df_NAs, na.omit)), 1, paste, collapse = "")
然后可以在不指定值的情况下构造数组:
a= 5
b= 10
a= 10
b= 5
a= 5
b= 10
void swap (int* a, int* b) {
int c = 0 ;
c = a ;
a = b ;
b = c ;
printf ("a= %d\n", a) ;
printf ("b= %d\n", b) ;
return ;
}
int main(){
int* a = 5 ;
int* b = 10 ;
printf ("a= %d\n", a) ;
printf ("b= %d\n", b) ;
swap (a,b) ;
printf ("a= %d\n", a) ;
printf ("b= %d\n", b) ;
return (0) ;
}
答案 1 :(得分:1)
int arr[100] = {0};
此处要做的是将第一个元素初始化为0,然后将值初始化其余的元素。 int的值初始化为零初始化,并且格式正确。
Node nodes[100] = {Node(0,0,"unknown")};
您在这里执行的操作是使用Node(0,0,"unknown")
初始化第一个元素,然后使用值初始化其余元素。类类型的值初始化将调用默认构造函数。 Node
不能默认构造,因此程序格式错误。
Node nodes[100](Node(0,0,"unknown"));
必须对数组使用大括号初始化。使用括号是语法错误。
Node nodes[100]{Node(0,0,"unknown")};
除了直接初始化语法而不是复制列表初始化之外,它与第一个相同。
可能的解决方案: