I'm new to C/C++ and pointers are troubling me. Here when I try to implement DFS, I see that my graph size is always 0. Can someone pls help me understand where to use the pointers.
#include<iostream>
#include<vector>
#include<map>
using namespace std;
void dfs_recursive(map<int, vector<int>> graph, bool visited[], int source){
    visited[source]=true;
    cout<<source<<" "<<endl;
    cout<<graph.size();
    for(int i=0;i<graph[source].size();i++){
        cout<<"i: "<<i<<endl;
        if(visited[graph[source][i]]==false)
            dfs_recursive(graph, visited, graph[source][i]);
    }
}
void addEdge(map<int, vector<int>> graph, int source, int dest){
    graph[source].push_back(dest);
    graph[dest].push_back(source);
}
int main(){
    int v=4;
    map<int, vector<int>> graph;
    bool visited[v]={false};
    addEdge(graph, 0, 1);
    addEdge(graph, 0, 4);
    addEdge(graph, 1, 2);
    addEdge(graph, 1, 3);
    addEdge(graph, 1, 4);
    addEdge(graph, 2, 3);
    addEdge(graph, 3, 4);
    dfs_recursive(graph, visited, 2);
}
 
     
     
    