我正在阅读有关Graphs http://community.topcoder.com/tc?module=Static&d1=tutorials&d2=graphsDataStrucs2的TopCoder教程,我正在尝试将伪代码实现为C ++。
我的问题是:
一个类与结构有什么不同?哪一个更适合处理图表?如何在C ++中将类节点传递到堆栈中?我试过这样做,但当我通过s.push(node(top.x+1, top.y));
时,它说找不到匹配的功能。
但是,如果我像这样通过:
node a;
a.x=x;
a.y=y;
s.push(a);
它不会产生任何错误。 我只是想实现并编写GrafixMask问题的解决方案(上面链接中给出的伪代码)。 这是我的部分实现:
#include <iostream>
#include <stdio.h>
#include <algorithm>
#include <stack>
#include <queue>
#include <vector>
using namespace std;
bool fills[600][400];
class node
{
public:
int x;
int y;};
int doFill(int x, int y)
{
int result=0;
stack<node> s;
node a;
a.x=x;
a.y=y;
s.push(a);
while(s.empty()==false)
{
node top=s.top();
s.pop();
if(top.x < 0 || top.x>=600) continue;
if (top.y < 0 || top.y >=400) continue;
if(fills[top.x][top.y]) continue;
fills[top.x][top.y]=true;
result++;
s.push(node(top.x+1, top.y));
s.push(node(top.x, top. y+1));
s.push(node(top.x, top.y-1));
s.push(node(top.x-1, top.y));
}
return result;
}
int main()
{
for(int i=0; i < 599; i++)
for(int j=0; j < 399; j++)
fills[i][j]=false;
}
答案 0 :(得分:2)
您的node
类没有带两个整数的构造函数。如果要以这种方式构造节点,则需要:
class node
{
public:
int x;
int y;
node() : x( 0 ), y( 0 ) {}
node( int pX, int pY ) : x( pX ), y( pY ) {}
};