标题:编译错误:[Error] 'int' is not a class, struct, or union type
取消只看楼主
青蝶
Rank: 2
等 级:论坛游民
帖 子:160
专家分:51
注 册:2018-2-4
结帖率:92%
已结贴  问题点数:20 回复次数:2 
编译错误:[Error] 'int' is not a class, struct, or union type
帮忙看一下这个代码为什么会给出这个编译错误:
165    53    D:\Dev-Cpp\MinGW64\lib\gcc\x86_64-w64-mingw32\4.9.2\include\c++\bits\stl_iterator_base_types.h    [Error] 'int' is not a class, struct, or union type
程序代码:
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<string>
#include<cctype>
#include<sstream>
#include<cmath>
#include<algorithm>
#include<queue>
#include<vector>
#include<set> 
#include<map>
#include<cassert>
#include<functional>
using namespace std;

int n,f[210];

struct node1{
    int x;
    int y;
}point[210];

struct node2{
    int p1;
    int p2;
    double length;
}edge[40005];

double distance(int i0,int j0){
    double ans;
    ans=sqrt((point[i0].x-point[j0].x)*(point[i0].x-point[j0].x)+(point[i0].y-point[j0].y)*(point[i0].y-point[j0].y));
    return ans;
}

int find(int number){
    if(f[number]==number) return number;
    return f[number]=find(f[number]);
}

void join(int n1,int n2){
    if(find(n1)!=find(n2)){
        f[n1]=f[n2];
    }
}

bool cmp(node2 e1,node2 e2){
    return e1.length<e2.length;
}

int main(void){
   int i,j,k,cas=0;
   double ans;
   while(scanf("%d",&n)!=EOF && n){
       k=1;
       for(i=1;i<=n;i++){
           scanf("%d %d",&point[i].x,&point[i].y);
           for(j=1;j<i;j++){
               edge[k].p1=i;
               edge[k].p2=j;
               edge[k].length=distance(i,j);
           }
       }
       getchar();
       sort(edge+1,edge+k,cmp);
       for(i=1;i<=n;i++) f[i]=i;
       for(i=1;i<k;i++){
           join(edge[i].p1,edge[i].p2);
           ans=edge[i].length;
           if(find[1]==find[2]) break;
       }
       cas++;
       printf("Scenario #%d\n",cas);
       printf("Frog Distance = %.3f\n\n",ans);
   }
   return 0;
}


搜索更多相关主题的帖子: int include point edge find 
2018-12-28 23:22
青蝶
Rank: 2
等 级:论坛游民
帖 子:160
专家分:51
注 册:2018-2-4
得分:0 
改成了find(1)==find(2),还是有这个错误。
我试了一下,如果把这一段代码删掉就没有这个问题了,但不知道这一段该怎么改?
程序代码:
for(i=1;i<=n;i++){
           scanf("%d %d",&point[i].x,&point[i].y);
           for(j=1;j<i;j++){
               edge[k].p1=i;
               edge[k].p2=j;
               edge[k].length=distance(i,j);
           }
       } 


[此贴子已经被作者于2018-12-29 12:49编辑过]

2018-12-29 12:48
青蝶
Rank: 2
等 级:论坛游民
帖 子:160
专家分:51
注 册:2018-2-4
得分:0 
回复 7楼 rjsp
谢谢大佬,或者改一下函数名就好了,想问一下为什么?
2018-12-29 17:32



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-492367-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.419628 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved