地图的内容没有以特定的方式打印出来

Contents of the map are not getting printed in specific manner

本文关键字:式打印 地图      更新时间:2023-10-16

在这个程序中,我试图重新排列{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;
}

我面临的问题是,地图被正确填充,问题在于打印地图时,以便以隔离的方式重新排列阵列。我无法弄清楚这段代码出了什么问题。我已经给出了工作代码。有人能指出错误是什么吗?

在这个程序中,我试图重新排列{0,1,0,1、1,1}并打印顺序{0,0,1,1,1,1}。

根据你的话,你需要sort elementsarray。您可以使用std::sort功能:

#include <algorithm>
#include <iostream>
int main()
{
    int arr[] = { 0, 1, 0, 1, 1, 1 };
    std::cout << "Before" << std::endl;
    for (int nVal : arr)
        std::cout << nVal << " ";
    std::cout << std::endl;
    //Sort it
    std::sort(std::begin(arr), std::end(arr));
    std::cout << "After" << std::endl;
    for (int nVal : arr)
        std::cout << nVal << " ";
    std::cout << std::endl;
    return 0;
}

输出:

Before
0 1 0 1 1 1
After
0 0 1 1 1 1