地图的内容没有以特定的方式打印出来
Contents of the map are not getting printed in specific manner
在这个程序中,我试图重新排列{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
elements
的array
。您可以使用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
相关文章:
- 如何使用 std::variant 打印地图键/值?
- 将对象放入地图后打印对象
- 如何打印我在地图中使用的数组?
- 为什么当我尝试打印地图内容时,我得到的是地址而不是 C++ 中的值?
- 通过迭代器打印出地图的值
- 如何打印属于地图的一系列元素(std::p air<size_t,std::string>)(不是所有元素)
- 在向量内打印地图
- 通过地图和打印内容迭代时,倒出输出
- 我想反转地图的值并使用基于范围的 for 循环打印它
- 悬挂式C 打印形状来自字符串阵列
- 如何在 c++ 中的字符串中显式打印“”
- 如何打印地图的索引
- 如何在不使用迭代器的情况下在 C++ 中打印地图
- C++ - 打印地图<结构,结构,构造函数>类型
- 如何打印地图
- 如何打印地图对象
- 打印地图中的所有对
- 如何打印地图?让它成为一个全局变量?C++
- 通过迭代打印C++地图
- C++ 以不区分大小写的字母顺序打印地图