Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/158.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何使用矢量的矢量来读取图形? #包括 #包括 使用名称空间std; 无效加法(矢量调整,整数,整数); 空打印图(矢量调整); int main() { 向量adj(4); addEdge(adj,1,2);//从节点1到节点2的边 附录(adj,1,3); 附录(adj,1,4); 附录(调整,2,3); 附录(第3,4节); 打印图形(adj); 返回0; } 无效加法(向量调整,整数u,整数v) { 形容词[u]。推回(v); } 空打印图(矢量调整) { 对于(int i=0;i_C++_C++11_Stl_Graph Algorithm - Fatal编程技术网

C++ 如何使用矢量的矢量来读取图形? #包括 #包括 使用名称空间std; 无效加法(矢量调整,整数,整数); 空打印图(矢量调整); int main() { 向量adj(4); addEdge(adj,1,2);//从节点1到节点2的边 附录(adj,1,3); 附录(adj,1,4); 附录(调整,2,3); 附录(第3,4节); 打印图形(adj); 返回0; } 无效加法(向量调整,整数u,整数v) { 形容词[u]。推回(v); } 空打印图(矢量调整) { 对于(int i=0;i

C++ 如何使用矢量的矢量来读取图形? #包括 #包括 使用名称空间std; 无效加法(矢量调整,整数,整数); 空打印图(矢量调整); int main() { 向量adj(4); addEdge(adj,1,2);//从节点1到节点2的边 附录(adj,1,3); 附录(adj,1,4); 附录(调整,2,3); 附录(第3,4节); 打印图形(adj); 返回0; } 无效加法(向量调整,整数u,整数v) { 形容词[u]。推回(v); } 空打印图(矢量调整) { 对于(int i=0;i,c++,c++11,stl,graph-algorithm,C++,C++11,Stl,Graph Algorithm,使用向量的向量可以编写 `vector<vector<int> > adj` or `list<list<int> > adj` std::vector adj(5);//注:圆括号 这是因为标准向量有一个构造函数,它接受请求的大小作为参数,并默认初始化所有元素 作为adj向量的向量,adj的元素将被初始化为空向量,您可以稍后用推回填充,以使用您可以编写的向量的向量 `vector<vector<int> > ad

使用
向量
向量
可以编写

`vector<vector<int> > adj`  or `list<list<int> > adj`  
std::vector adj(5);//注:圆括号
这是因为标准向量有一个构造函数,它接受请求的大小作为参数,并默认初始化所有元素


作为
adj
向量的向量,
adj
的元素将被初始化为空向量,您可以稍后用
推回
填充,以使用您可以编写的
向量的
向量

`vector<vector<int> > adj`  or `list<list<int> > adj`  
std::vector adj(5);//注:圆括号
这是因为标准向量有一个构造函数,它接受请求的大小作为参数,并默认初始化所有元素


作为向量的向量,
adj
的元素将被初始化为空向量,您可以稍后使用基于零的索引填充
push_
向量。
adj[0]
是向量中的第一个元素

向量也以无大小开始。在添加一个元素之前,将不会有
adj[0]
元素


在尝试调用
adj[u]之前,您可能需要
adj.resize(4)
。向后推(v)
向量使用基于零的索引。
adj[0]
是向量中的第一个元素

向量也以无大小开始。在添加一个元素之前,将不会有
adj[0]
元素


在尝试调用
adj[u]之前,您可能需要
adj.resize(4)
。向后推(v)
创建向量adj时,您有一个空向量。在函数addEdge中,您可以访问adj中索引u处的条目。但请记住,这是一个空向量。这就是崩溃的原因

我假设你的函数addEdge应该给你正在创建的邻接矩阵添加一个条目。在这之前,你需要为该矩阵创建空间。这意味着,你需要在你的邻接向量中为它将包含的向量留出空间,你还需要在这些向量中留出空间,在这些向量中你可以放置边缘信息


但一旦设置了向量,打印函数仍将打印所有0,因为函数addEdge会复制要传递的向量,然后写入该副本。原始调整向量将保持不变。如果要修改原始向量,请确保通过指针传递向量。

创建向量调整时,您需要有一个空向量。在你的函数addEdge中,你可以访问adj中索引u处的条目。但是记住,那是一个空向量。这就是你崩溃的原因

我假设你的函数addEdge应该给你正在创建的邻接矩阵添加一个条目。在这之前,你需要为该矩阵创建空间。这意味着,你需要在你的邻接向量中为它将包含的向量留出空间,你还需要在这些向量中留出空间,在这些向量中你可以放置边缘信息


设置向量后,打印函数仍将打印所有0,因为函数addEdge会复制要传递的向量,然后写入该副本。原始调整向量将保持不变。如果要修改原始向量,请确保通过指针传递向量。

您的
addEdge版本
adj
作为副本。您操作该副本,然后在函数返回时销毁该副本。您需要使用引用访问外部adj:

std::vector<std::vector<int>> adj(5); // Note: round parentheses
void addEdge(向量&adj,int u,int v)
{
形容词[u]。推回(v);
}
和使用:

void addEdge(vector<vector<int> >& adj, int u , int v)
{
    adj[u].push_back(v);

}
void print_图(const vector&adj)

为了避免另一个副本

您的
addEdge版本将
adj
作为副本。您操作该副本,然后在函数返回时销毁该副本。您需要使用引用访问外部adj:

std::vector<std::vector<int>> adj(5); // Note: round parentheses
void addEdge(向量&adj,int u,int v)
{
形容词[u]。推回(v);
}
和使用:

void addEdge(vector<vector<int> >& adj, int u , int v)
{
    adj[u].push_back(v);

}
void print_图(const vector&adj)

为避免再次复制

感谢您的回复。我已按照您所说的方式进行了更改,但没有得到输出。输出屏幕为空。我已检查,在print_graph()中,最内层for循环不工作。控件未进入最内层for循环(这就是为什么屏幕上没有打印任何内容)为什么??谢谢你的回复。我已经改变了你说的方式,但我没有得到输出。输出屏幕是空白的。我已经检查了,在print_graph()中,最内层的for循环不工作。控件没有进入最内层的for循环(这就是为什么屏幕上没有打印内容)为什么??