Я пытаюсь смоделировать сеть, используя C ++. У меня есть структура под названием NetworkConnection:
struct NetworkConnection {
int i, j, weight;
}
и у меня есть класс под названием Network
class Network {
public:
std::vector<NetworkConnection> connections_for(int i) {
return connections[i];
}
void connect(int i, int j, int weight) {
NetworkConnection connection;
connection.i = i;
connection.j = j;
connection.weight = weight;
connections[i].push_back(connection)
}
private:
std::vector< std::vector<NetworkConnection> > connections;
}
Теперь моя проблема в том, что я получаю ошибки при вызове connections_for (i), в частности, в конструкторе копирования. Смущает, однако, что точные обстоятельства segfault варьируются между запусками приложения. Я попытался использовать вектор указателей и вектор векторов указателей, например, так:
std::vector< std::vector<NetworkConnection> * > connections;
std::vector< std::vector<NetworkConnection *> > connections;
с соответствующими настройками интерфейса, но это не решило проблему. Сейчас я не знаю, как это исправить.
Что я здесь не так делаю? Или в качестве альтернативы, как бы вы смоделировали сеть на C ++ с интерфейсом, аналогичным описанному выше?