opposite :: Boost.Graph Documentation

# opposite

Given an edge and one of its endpoints, returns the other endpoint.

Defined in: `<boost/graph/graph_utility.hpp>`
Complexity: O(1)

## Synopsis

    template <typename Graph>
    vertex_descriptor
    opposite(edge_descriptor e, vertex_descriptor v, const Graph& g);

If `v` is the source of `e`, returns the target. If `v` is the target, returns the source.

## Example

    #include <boost/graph/adjacency_list.hpp>
    #include <boost/graph/graph_utility.hpp>
    #include <iostream>

    int main() {
        using namespace boost;
        using Graph = adjacency_list<vecS, vecS, directedS>;

        Graph g(4);
        auto e = add_edge(1, 3, g).first;

        // incident: get both endpoints of an edge
        auto endpoints = incident(e, g);
        std::cout << "incident(" << source(e, g) << "->" << target(e, g) << ") = ("
                  << endpoints.first << ", " << endpoints.second << ")\n";

        // opposite: given one endpoint, get the other
        auto v = opposite(e, vertex(1, g), g);
        std::cout << "opposite(e, 1) = " << v << "\n";

        v = opposite(e, vertex(3, g), g);
        std::cout << "opposite(e, 3) = " << v << "\n";
    }

    incident(1->3) = (1, 3)
    opposite(e, 1) = 3
    opposite(e, 3) = 1