gpt4 book ai didi

c++ - 映射、迭代器和复杂结构 - STL 错误

转载 作者:搜寻专家 更新时间:2023-10-30 23:50:14 25 4
gpt4 key购买 nike

所以,我有两个结构:

struct coordinate {
float x;
float y;
}

struct person {
int id;
coordinate location;
}

和一个对坐标进行操作的函数:

float distance(const coordinate& c1, const coordinate& c2);

在我的主要方法中,我有以下代码:

map<int,person> people;
// populate people
map<int,map<float,int> > distance_map;
map<int,person>::iterator it1,it2;
for (it1=people.begin(); it1!=people.end(); ++it1) {
for (it2=people.begin(); it2!=people.end(); ++it2) {
float d = distance(it1->second.location,it2->second.location);
distance_map[it1->first][d] = it2->first;
}
}

但是,我在构建时收到以下错误:

stl_iterator_base_types.h: In instantiation of ‘std::iterator_traits<coordinate>’:
stl_iterator_base_types.h:129: error: no type named ‘iterator_category’ in ‘struct coordinate’
stl_iterator_base_types.h:130: error: no type named ‘value_type’ in ‘struct coordinate’
stl_iterator_base_types.h:131: error: no type named ‘difference_type’ in ‘struct coordinate’
stl_iterator_base_types.h:132: error: no type named ‘pointer’ in ‘struct coordinate’
stl_iterator_base_types.h:133: error: no type named ‘reference’ in ‘struct coordinate’

它把它归咎于线路:

float d = distance(it1->second.location,it2->second.location);

为什么 STL 会提示我的代码?

最佳答案

标准库中有一个名为std::distance 的函数,它对迭代器进行操作。所以看起来编译器正在尝试调用那个而不是你的。如果您正在使用 using namespace std; 指令,我会删除它,只说 using std::map; 等。

关于c++ - 映射、迭代器和复杂结构 - STL 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2535640/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com