C++结构默认值
C++ Structures Default Value
我试图解决LeetCode问题::1207:唯一出现次数。
我的思维方式:
- 我将制作一个结构Occurences,它将包含两个子元素,count和element。元素将存储元素,而count将存储元素的计数
- 现在我将创建一个IN函数,它将检查Occurrence类型的数组中是否存在元素
- 对于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;
}
问题:
- 我在结构定义中将count的值初始化为0,但在运行时没有初始化为零。这是一些垃圾值。我不明白为什么
我在结构定义中将count的值初始化为0,但在运行它时并没有初始化为零。这是一些垃圾值。我不明白为什么?
好吧,当你在C++中使用C工具时,就会发生这种情况,而没有适当地了解它们的作用和不作用,在这种情况下,它们会忽略构造函数。
malloc
不创建任何Occurence
对象,强制转换为UB。
只需使用std::vector
、std::unique_ptr
或至少使用new Occurence[N]
。
我强烈建议你改用现代c++,而不是许多在线益智网站所说的半c半错误的c++设置;教";。
相关文章:
- 如何创建一个CMake变量,除非显式重写,否则使用默认值
- 具有默认值的引用获取函数
- 当给定默认值时,为什么此模板参数推导失败
- 从具有默认值的部分指定模板类继承时发生SWIG错误,具有不带默认值的正向声明
- 实例化时结构字段中的默认值
- 了解具有显式和默认值C++结构
- Boost.Spirit.Qi 语法,用于 Boost.Fusion 自适应结构中的默认值
- 在结构C++,构造函数中的默认值和默认参数有什么区别
- 如何将结构变量初始化为默认值
- Corba IDL:结构成员的默认值
- 为什么 MSVC 和 GCC 不能使用具有默认值的字段初始化结构
- 结构成员的默认值
- 如何使用默认值定义结构
- 类内定义的静态结构的静态成员的编译时默认值
- 设置类成员函数的结构输入的默认值
- 初始化结构体中的默认值
- 带默认值的结构体的大括号(聚合)初始化
- 结构的数组成员的默认值
- C++结构中指针的默认值
- 结构体中成员的默认值