C++ 如何在while循环中每次将结构初始化为零?

C++ 如何在while循环中每次将结构初始化为零?,c++,structure,C++,Structure,在这段代码中,我将如何在everywhile循环中将struct初始化为零。我尝试了memset,但它显示错误。我还在main函数中创建了struct对象。但是程序崩溃了。请给我一些提示来解决这个问题。试试这个,它更结构化,通常不容易出错 #include<bits/stdc++.h> using namespace std; typedef long long ll; #define max 200005 struct st{ ll index,freq,val; }s[m

在这段代码中,我将如何在everywhile循环中将struct初始化为零。我尝试了memset,但它显示错误。我还在main函数中创建了struct对象。但是程序崩溃了。请给我一些提示来解决这个问题。

试试这个,它更结构化,通常不容易出错

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
#define max 200005
struct st{
    ll index,freq,val;
}s[max];;

int main(){
    ll t;
    cin>>t;
    while(t--){
        ll n;
        cin>>n;
        ll counter[max]={0};
        for(ll i=1;i<=n;i++){
            ll x;
            cin>>x;
            s[x].val=x;
            s[x].index=i;
            s[x].freq++;
            cout<<s[x].freq<<endl;
        }
        
    }
    return 0;
}

编译器甚至可能会将我转换为memset。

当然会有比这更好的解决方案,但您可以在while循环的开头添加以下代码段:

std::fill(std::begin(s), std::end(s), st({0,0,0}));

您也可以考虑在循环中每次声明结构数组的想法,就像这样:

for(int j=0; j<max; j++){
    s[j].val=0;
    s[j].index=0;
    s[j].freq=0;
}
是我干的。
问题解决了。我使用DEV C++ IDE,这就是代码的问题所在。谢谢大家

你的前4行代码让我头晕目眩。你为什么要写这样的代码?我是初学者。typedef long-long-ll;只是wtf?!?,不要这样做。宏不是用来定义常量的^^^不用担心,这就是为什么我要告诉你它有什么问题;请显示失败的memset尝试如果最大堆栈数小于200005*SizeOfflong long*3I尝试了此方法,但它正在显示,这将在您的脸上爆炸tle@the_noobie_coder什么是tle?不是每个人都遵循竞争性编程。@高炉我想它太慢了。C++开发者通常习惯于使用STD::CIN和STD::COUT用于标准I/O操作,但它们不是最快的。如果您懒得更改代码,您可以…
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
#define max 200005
struct st{
    ll index,freq,val;
};

int main(){
    ll t;
    cin>>t;
    while(t--){
        st s[max];
        ll n;
        cin>>n;
        ll counter[max]={0};
        for(ll i=1;i<=n;i++){
            ll x;
            cin>>x;
            s[x].val=x;
            s[x].index=i;
            s[x].freq++;
            cout<<s[x].freq<<endl;
        }
        
    }
    return 0;
}
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
#define max 200005
struct st{
    ll index,freq,val;
};

int main(){
    ll t;
    cin>>t;
    while(t--){
        st s[max]={0};
        ll n;
        cin>>n;
        ll counter[max]={0};
        for(ll i=1;i<=n;i++){
            ll x;
            cin>>x;
            s[x].val=x;
            s[x].index=i;
            s[x].freq++;
            cout<<s[x].freq<<endl;
        }
        
    }
    return 0;
}