2015-10-02 12 views
0

Я работаю над макс. Двухсторонним алгоритмом сопоставления. Мне трудно понять, как устанавливать значения в массиве на основе ключа/значения на карте.Копирование значений из карты в массив 256x256 в программе на C++

В конечном счете, мне нужна итерация по моим строкам, которые соответствуют моим ключам на карте mymap. И тогда мне нужно установить соответствующий столбец в true (1) на основе значения в mymap. В конце концов, это будет выглядеть примерно так

bool bpGraph[V][V] = { {0, 0, 0, 1, 0, ect.... 0}, //Key 1 Value 4 
         {0, 2, 0, 0, 0, ect.... 0}, // Key 2 Value 2 
         {0, 0}, 
         {0, 0}, 
         {0, 0}, 
         {0, 0}, 
         {0, 0} 
         }; 

В настоящее время мой algorithim выглядит так, вы можете увидеть, что я озадачен о том, как перебирать карты, чтобы установить соответствующее значение в массиве:

рядный ничтожной keep_window_open() {char ch; CIN >> ч;} // Драйвер программа для тестирования выше функций

int main() 
{ 

    ifstream myfile("H:\\School\\CSC-718\\paths.txt"); 
    std::map<int, int> mymap; // Create the map 
    pair<int,int> me; // Define the pair 
    char commas; // Address the comma in the file 
    int a, b; 
    vector<int> v; 

    while (myfile >> a >> commas >> b) 
    { 
    mymap[a] = b; // Transfer ints to the map 
    } 
    mymap; 

// Этот код выше работает

bool bpGraph[M][N]; // Define my graph array 

    for (int i = 0; i <mymap.count; i++) // the plan is to iterate through the keys M 
and set the appropriate value true on N 
    { 

    bool bpGraph[M][N] = { 

    }; 
    } 
    cout << "Maximum number networks " 
     << maxBPM(bpGraph); // run it through the BPM algorithim 
    keep_window_open(); 
    return 0; 
} 

ответ

2

Вы не можете получить доступ к элементам карты с помощью индекса. Вместо этого вам нужно использовать итератор. И в этом случае вы можете использовать более короткий «для каждого» цикла стиля:

for (const auto &val: mymap) { 
    bpGraph[val.first][val.second] = true; 
} 

Вы должны инициализировать bpGraph массив ложных перед выполнением этого цикла.

+0

Удивительный, работал хорошо, спасибо – Phi