0
このプログラムでは、{0,1,0,1,1}を並べ替えて{0,0,1,1,1、 1}。マップの内容が特定の方法で印刷されない
#include <iostream>
#include <map>
using namespace std;
void segregate0and1(int arr[], int size){
std::map<int,int> mymap;
for (int i = 0; i < size;i++){
std::map<int,int>::iterator it;
//cout<<"Array element"<<arr[i]<<endl;
it = mymap.find(arr[i]);
if (it != mymap.end()){
mymap[arr[i]]++;
}
else{
mymap.insert (std::pair<int,int>(arr[i],1));
}
}
cout<<"Printing after segregating"<<endl;
std::map<int,int>::iterator it1;
int j,k;
for (it1=mymap.begin(); it1!=mymap.end(); it1++){
k = it1->first;
j = it1->second;
//cout<<"The value of k is "<<k<<endl;
//cout<<"The value of j is "<<j<<endl;
while (j > 0){
//cout<<"I am inside this";
std::cout<<k<<" ";
j--;
}
}
}
int main()
{
int arr[] = {0, 1, 0, 1, 1, 1};
int arr_size = sizeof(arr)/sizeof(arr[0]);
segregate0and1(arr, arr_size);
getchar();
return 0;
}
私が直面しています問題は、マップが正しく読み込まなっていると、アレイは、隔離的に再配置されるように出てマップを印刷中に問題があるということです。私はコードの何がうまくいかないのか理解できません。私は作業コードを与えました。エラーが何であるかを誰かが指摘できますか?
あなたが "入力" と期待される "出力" に示すが、*実際の*出力は何ですか?デバッガでコードをステップ実行しようとしましたか? –
ところで、 'find'や' else .. 'は必要ありません。 'mymap [arr [i]] ++を実行するだけでうまくいくはずです(マップを"索引付け "すると、要素が存在しない場合はその要素が作成され、デフォルト値は' int'の場合はゼロです)。 –
エラーが発生しました。私は正しいC++コンパイラを使用していませんでした。私は(-std = C++ 11)を使用していました。提案ありがとう。 – crash