gpt4 book ai didi

c++ - 使用 vector 的 vector 对网络建模

转载 作者:行者123 更新时间:2023-11-30 03:11:20 27 4
gpt4 key购买 nike

我正在尝试使用 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) 时出现段错误,特别是在复制构造函数中。然而,令人困惑的是,段错误的确切情况在应用程序的运行之间有所不同。我试过像这样使用指针 vector 和指针 vector vector :

std::vector< std::vector<NetworkConnection> * > connections;
std::vector< std::vector<NetworkConnection *> > connections;

对界面进行了适当的调整,但并没有解决问题。现在我不知道如何解决这个问题。

我在这里做错了什么?或者,您将如何使用与上述类似的接口(interface)在 C++ 中为网络建模?

最佳答案

您想使用 map :

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::map<int, std::vector<NetworkConnection> > connections;
};

您甚至可能想使用 map 中的 map :

class Network {
public:
std::map<int, 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;
std::map<int, NetworkConnection> &map = connections_for(i);
map[j] = connection;
}
private:
std::map<int, std::map<int, NetworkConnection> > connections;
};

关于c++ - 使用 vector 的 vector 对网络建模,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2349801/

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