# `copy_graph`

    template <class VertexListGraph, class MutableGraph>
    void copy_graph(const VertexListGraph& G, MutableGraph& G_copy,
        const bgl_named_params<P, T, R>& params = all defaults)

This function copies all of the vertices and edges from graph `G` into `G_copy`. Also, it copies the vertex and edge properties, either by using the `vertex_all` and `edge_all` property maps, or by user-supplied copy functions.

### Where Defined

`boost/graph/copy.hpp`

### Parameters

IN: `const VertexListGraph& G`

> A directed or undirected graph. The graph type must be a model of Vertex List Graph.

OUT: `MutableGraph& G_copy`

> The resulting copy of the graph. The graph type must be a model of Mutable Graph.

### Named Parameters

IN: `vertex_copy(VertexCopier vc)`

> This is a Binary Function that copies the properties of a vertex in the original graph into the corresponding vertex in the copy.
> Default: `vertex_copier<VertexListGraph, MutableGraph>` which uses the property tag `vertex_all` to access a property map from the graph.

IN: `edge_copy(EdgeCopier ec)`

> This is a Binary Function that copies the properties of an edge in the original graph into the corresponding edge in the copy.
> Default: `edge_copier<VertexListGraph, MutableGraph>` which uses the property tag `edge_all` to access a property map from the graph.

IN: `vertex_index_map(VertexIndexMap i_map)`

> The vertex index map type must be a model of Readable Property Map and must map the vertex descriptors of `G` to the integers in the half-open range `[0,num_vertices(G))`.
> Default: `get(vertex_index, G)`. Note: if you use this default, make sure your graph has an internal `vertex_index` property. For example, `adjacency_list` with `VertexList=listS` does not have an internal `vertex_index` property.

UTIL/OUT: `orig_to_copy(Orig2CopyMap c)`

> This maps vertices in the original graph to vertices in the copy. Default: an iterator_property_map created from a `std::vector` of the output graph's vertex descriptor type of size `num_vertices(g)` and using the `i_map` for the index map.

### Complexity

The time complexity is O(V + E).

Copyright © 2000-2001 | Jeremy Siek, Indiana University (jsiek@osl.iu.edu)