C++结构默认值

C++ Structures Default Value

本文关键字:默认值 结构 C++      更新时间:2024-09-29

我试图解决LeetCode问题::1207:唯一出现次数。

我的思维方式:

  1. 我将制作一个结构Occurences,它将包含两个子元素,countelement。元素将存储元素,而count将存储元素的计数
  2. 现在我将创建一个IN函数,它将检查Occurrence类型的数组中是否存在元素
  3. 对于count_occurrences函数,我将检查数组中是否存在Var。如果否,那么我将元素和它的计数值相加。如果是,那么我们增加计数值

代码:

#include<iostream>
using namespace std;
typedef struct Occurence{
int element;
int count = 0;
}Occurence;
bool IN(Occurence Arr[],int var,int size){
for(int i=0;i<size;i++){
if(var == Arr[i].element){
return true;
}
else{
return false;
}
}
return false;
}
void count_Occurence(Occurence Array[],int Arr[],int size){
for(int i=0;i<size;i++){
int Var = Arr[i];
if( IN(Array,Var,size) ){
Array[i].count++;
}else{
Array[i].element = Var;
Array[i].count++;
}
}
}
int main(){
int Arr[1000];
int N;
cin >> N;

for(int i=0;i<N;i++){
cin >> Arr[i];
}
Occurence *Array = (Occurence*)malloc(N*sizeof(Occurence));
count_Occurence(Array,Arr,N);
int ans = 0;
for(int i=0;i<N;i++){
ans = ans ^ Array[i].count;
}

cout << ans;
return 0;
}

问题:

  1. 我在结构定义中将count的值初始化为0,但在运行时没有初始化为零。这是一些垃圾值。我不明白为什么

我在结构定义中将count的值初始化为0,但在运行它时并没有初始化为零。这是一些垃圾值。我不明白为什么?

好吧,当你在C++中使用C工具时,就会发生这种情况,而没有适当地了解它们的作用和不作用,在这种情况下,它们会忽略构造函数。

malloc不创建任何Occurence对象,强制转换为UB。

只需使用std::vectorstd::unique_ptr或至少使用new Occurence[N]

我强烈建议你改用现代c++,而不是许多在线益智网站所说的半c半错误的c++设置;教";。