我有一个数组,其中包含如下结构:
struct Point
{
int x;
int y;
}
Point array_of_structure[10] ;
for(int i=0;i<10;i++)
{
array_of_structure[i].x = i*2;
}
我想获得保持x值为6的结构。这样我就可以访问该结构的y值。我该怎么做? 它类似于下面的内容:
Point p = Get the structure which contains x value of 6;
int c = p.y;
这是一个示例解决方案。但我需要更好的想法或想法。
for(int i=0;i<10;i++)
if(array_of_structure[i].x==6)
return array_of_structure[i].y;
我想过也许指针可以完成这项工作,但我不确定。我无法弄清楚如何解决这个问题。
答案 0 :(得分:2)
标准库提供了一个函数std::find_if
,可用于查找没有循环的项目。但是,作为一种学习练习,您可以使用如下所述的循环来完成:
您可以迭代struct
的数组,直到找到感兴趣的x
。您可以使用指针或索引,具体取决于您的偏好。您需要设置一个标记,指示您是否找到了您的商品。
以下是使用指针执行此操作的方法:
struct Point *ptr;
bool found = false;
for (ptr = array_of_structure ; !found && ptr != &array_of_structure[10] ; ptr++) {
found = (ptr->x == x);
}
if (found) {
cout << ptr->y << endl;
}
以下是使用索引执行此操作的方法:
int index ;
bool found = false;
for (index = 0 ; !found && index != 10 ; index++) {
found = (array_of_structure[index].x == x);
}
if (found) {
cout << array_of_structure[index].y << endl;
}
注意:如果您正在寻找find_if
解决方案here is an answer that explains this approach。