结构定义为
struct state{
string node_name;
int node_no;
int node_val;
int occupant;
vector<int>node_con;
};
state s[100][100]
我想将它与i和j值一起发送到函数,其中s [i] [j],(i->行,j->列)。结构如何与i和j一起发送?
答案 0 :(得分:1)
这样
void f(StructName (*a)[100], int i, int j) {
}
请阅读有关二维数组和指向数组的指针。或者在C ++中,你可以通过引用传递它,这将使它不会衰减到它的第一个元素
void f(StructName (&a)[100][100], int i, int j) {
}
答案 1 :(得分:0)
template <class T, int N, int M>
void f(T (&a)[N][M])
{
//...
}
或者,您可以手动传递尺寸,或者对它们进行硬编码
答案 2 :(得分:0)
在C
中,您可以将其包装在另一个结构中: - )
我在你的代码中看到的内容看起来不像C
...
struct state {
string node_name;
int node_no;
int node_val;
int occupant;
vector<int>node_con;
};
struct wrap {
int i;
int j;
struct state (*ps)[];
};
int main(void) {
struct state s[100][100];
struct wrap x;
x.i = 100;
x.j = 100;
x.ps = s;
fx(x);
return 0;
}
答案 3 :(得分:0)
你的意思是传递一系列结构。我认为应该是这样的:
struct state{
string node_name;
int node_no;
int node_val;
int occupant;
vector<int>node_con;
};
state s[100][100];
void doSomething(state theState[][100], int i, int j)
{
cout << theState[i][j].node_name << endl;
}
int main()
{
s[0][1].node_name = "s[0][1]";
doSomething(s, 0, 1);
}