Я пытаюсь построить класс графа, который представлен ребрами и вершинами.
Я реализовал ребра как набор строк, а вершины как набор строк, и хотел бы создавать методы для создания пересечений и объединений между моими созданными графами. Это класс:
class Graph {
public:
string name;
std::set<string> vertices;
std::set<string> edges; //<v1,v2> format
Graph()= default;
Graph(const Graph&) = default;
~Graph() = default;
Graph graphUnion(const Graph& graph);
Graph graphIntersection(const Graph& graph);
};
Я использовал функцию std :: set_intersection для своего метода:
Graph Graph::graphIntersection(const Graph& graph){
Graph new_graph;
std::set<string> new_vertices;
new_vertices.end() = std::set_intersection(this->vertices.begin(), this->vertices.end(), graph.vertices.begin(),
graph.vertices.end(), new_vertices.begin());
std::set<string> new_edges;
new_edges.end() = std::set_intersection(this->edges.begin(), this->edges.end(), graph.edges.begin(),
graph.edges.end(), new_edges.begin());
new_graph.vertices = new_vertices;
new_graph.edges = new_edges;
return new_graph;
}
Тем не менее, когда я пытаюсь запустить его, я получаю следующую ошибку, которая имеет что-то связано с функцией set_intersection в <algorithm>
/Library/Developer/CommandLineTools/usr/bin/../include/c++/v1/algorithm:5415:27: error: no viable overloaded '='
*__result = *__first1;
~~~~~~~~~ ^ ~~~~~~~~~
Пожалуйста, помогите мне определить эту ошибку, так как я не могу сказать, в чем проблема ...
Спасибо!