J
Jellicle
There are some sturct arrays (or struct vectors), such as:
struct S1_t
{
double keyField ;
..// other fields
}
S1_t s1[100];
std::vector<S1_t> vecS1;
I need to find the index of the item in array "s1" or vector "vecS1"
which
has the minimal value in field "keyField".
Some codes could be:
//----------------------------------------------
double minvalue = s1[0];
for (int i=0; i< 100; i++ ) // for (int i=0; i< vecS1.size(); i++)
....
{
if (s1.keyField < minvalue )
{
minvalue =s1.keyField;
index = i;
}
}
//----------------------------------------------
However, since there are many such arrays(vectors) with different
struct type
(so, with different "field" name)
How can I define a function (or MACRO?) to get the index
of the minumal item (by comparing the the value of a key field)?
such as MIN(struct_array_variable, field_name)
e.g.
index = MIN(s1, keyField);
to get the index of array "s1" with a minimal value of "keyField".
And ,
index = MIN(s2,f2) get that of "s2" (defined as follows
struct s2_t
{
int f2;
// other fields
}
s2_t s2[100]
A similar function is FIND(struct_array, field, value)
to find the index from array "struct_array", where
struct_array[index].field == value;
I think that the sticking point is that how to pass the field name
as a parameter? isn't it?
Could anyone help me?
Thank you very much!
struct S1_t
{
double keyField ;
..// other fields
}
S1_t s1[100];
std::vector<S1_t> vecS1;
I need to find the index of the item in array "s1" or vector "vecS1"
which
has the minimal value in field "keyField".
Some codes could be:
//----------------------------------------------
double minvalue = s1[0];
for (int i=0; i< 100; i++ ) // for (int i=0; i< vecS1.size(); i++)
....
{
if (s1.keyField < minvalue )
{
minvalue =s1.keyField;
index = i;
}
}
//----------------------------------------------
However, since there are many such arrays(vectors) with different
struct type
(so, with different "field" name)
How can I define a function (or MACRO?) to get the index
of the minumal item (by comparing the the value of a key field)?
such as MIN(struct_array_variable, field_name)
e.g.
index = MIN(s1, keyField);
to get the index of array "s1" with a minimal value of "keyField".
And ,
index = MIN(s2,f2) get that of "s2" (defined as follows
struct s2_t
{
int f2;
// other fields
}
s2_t s2[100]
A similar function is FIND(struct_array, field, value)
to find the index from array "struct_array", where
struct_array[index].field == value;
I think that the sticking point is that how to pass the field name
as a parameter? isn't it?
Could anyone help me?
Thank you very much!