【发布时间】:2014-12-07 22:29:29
【问题描述】:
我在尝试迭代某些地图时遇到问题。 基本上我有一个存款班。每个存款类都有一个包含目的地存款和距离的多图。 (这将用于创建图表)。 当我尝试迭代所有地图时,我遇到了分段错误。
代码如下:
for (int j = 0; j < deposit.size(); j++) {
for (typename multimap< Deposit<Product>*, int>::iterator it = deposit.at(j)->getConnections().begin(); it != deposit.at(j)->getConnections().end(); it++) {
cout << "From the depo. " << deposit.at(j)->getKey() << " to " << it->first->getKey() << " with the distance " << it->second << endl;
}
}
编辑:
存款类:
template<class Product>
class Deposit {
private:
multimap <Deposit<Product>*, int> connections;
public:
void addConnection(Deposit<Product>* dep, int dist);
multimap <Deposit<Product>*, int> getConnections() const;
};
(...)
template<class Product>
void Deposit<Product> ::addConnection(Deposit<Product>* depKey, int dist) {
this->connections.insert(pair<Deposit<Product>*, int>(depKey, dist));
}
template<class Product>
multimap < Deposit<Product>*, int> Deposit<Product> ::getConnections() const {
return this->connections;
}
存储类 - 这是我填充多图的地方。
(...)
ligs = rand() % 10;
do{
ligIdx = rand() % deposit.size();
dist = rand() % 100;
deposit.at(i)->addConnection(deposit.at(ligIdx), dist);
ligs--;
}while(ligs>0);
(...)
我的存款类有 2 个子类。我不知道为什么会发生错误。迭代器有问题吗?
非常感谢!!!
【问题讨论】:
-
您能否向我们展示您是如何填充您的多图以及如何创建
Deposit<Product>指针的? -
我添加了更多信息。让我知道是否还有什么我可以给的。谢谢。
-
好的,类定义被证明非常有用:它不是分配,而是您定义 getter 成员函数的方式。
标签: c++ segmentation-fault multimap