我试图编写一个控制向量的方法,如果有特定元素的话。所以我有一个图形结构,如下所示:
struct graph {
std::vector <std::vector<int>> gr;
};
然后我有一个在两个顶点之间添加边的方法。
void add_edge(graph& g, int from, int to) {
if ( from >= 0 && to >= 0 && from < g.gr.size() && to < g.gr.size()) {
g.gr[from].push_back(to);
}
}
此方法必须在两个顶点之间添加有向边,控制是否已存在有向边,如果是 - 则不执行任何操作。它只能用现有节点调用。
主要问题是我不知道如果有一个有针对性的边缘如何控制。我尝试使用std::find(g.gr[from].begin,g.gr[from].end, to) != g.gr[from].end())
条件,但最终出现错误。
FIRST ERROR Severity Code Description Project File Line Suppression State Error C3867 'std::vector<int,std::allocator<_Ty>>::begin': non-standard syntax; use '&' to create a pointer to member DU2 c:\users\1\...\graph.hpp 81
SECOND ERROR Severity Code Description Project File Line Suppression State Error C2672 'std::find': no matching overloaded function found DU2 c:\users\1\..\graph.hpp 81
答案 0 :(得分:2)
您忘记了()
末尾的g.gr[from].begin
和g.gr[from].end
中的std::find