我正在尝试按int对数组对进行排序,但是我的排序是说'无法解析标识符'到pairs.begin(),pairs.end()和compare_pairs_second() 。我无法弄清楚为什么,但我可能做错了什么? 这是我的代码:
#include <iostream>
#include <string>
#include <cstdlib>
#include <iomanip>
#include <algorithm>
#include <iterator>
using namespace std;
main()
{
string name[10];//declaring an array name
int number[10];//declaring an array number
cout << "Please input 10 names \n";//output
for(int i = 0; i < 10; i++){//for statement
cin >> name[i];//inputting names in the array names
}
cout << "Please input their corresponding numbers \n";//output
for(int x = 0; x < 10; x++){
cin >> number[x];//inputting numbers
}//end for
int i = 0;//redeclaring i to be 0
int x = 0;//redeclaring x to be 0
for(int l = 0; l < 10; l++)//for statement
{
cout << name[i] << ": " << number[x] << "\n";
i++;//adding 1 to i so outputs all of array name
x++;//adding 1 to x so outputs all of array number
}//end for
pair<string, int> pairs[10];
int i = 0;
int x = 0;
for(int z = 0; z < 10; z++)
{
pairs[z] = make_pair(name[i], number[x]);
i++;
x++;
}
std::sort(pairs.begin(), pairs.end(), compare_pairs_second<std::less>());
int i = 0;
int x = 0;
for(int z = 0; z < 10; z++)
{
name[i] = pairs[z].first;
number[x] = pairs[z].second;
i++;
x++;
}
string search = "";
cout << "Enter a name to search for";
cin >> search;
size_t found = pairs.find(search);
if(found!=string::npos)
cout << search << pairs;
} //end main
UPDATE /编辑: 在某种程度上,我得到了我的工作......我删除了给我错误的代码行,它现在对我的数字数组进行排序,这是我想要的一半。但是现在如何在不使用我在此修复之前使用的对变量的情况下将名称与各自的数字保持一致? 防爆 数组编号[5] = {5,2,9,11,27}; 数组名称[5] = {“史蒂夫”,“约翰”,“鲍勃”,“拉里”,“帕特里克”}; 排序后的输出: John:2 Steve:5 Bob:9 Larry:11 Patric:27
#include <iostream>
#include <string>
#include <cstdlib>
#include <iomanip>
#include <algorithm>
#include <iterator>
using namespace std;
main()
{
const int size = 10;
string name[10];//declaring an array name
int number[10];//declaring an array number
cout << "Please input 10 names \n";//output
for(int i = 0; i < 10; i++){//for statement
cin >> name[i];//inputting names in the array names
}
cout << "Please input their corresponding numbers \n";//output
for(int i = 0; i < 10; i++){
cin >> number[i];//inputting numbers
}//end for
sort(number,number+size);
int i;
int j;
int min;
int counter = 0;
for(i = 0; i < counter; i++)
{
min = i;
for(j = i+1; j < counter; j++)
{
if(name[j] < name[min])
{
string tempString = name[i];
name[i] = name[j];
name[j] = tempString;
int tempInt = number[i];
number[i] = number[j];
number[j] = tempInt;
}
}
}
for(i = 0; i < 10; i++)
{
cout << name[i] << ": " << number[i] << "\n";
};
} //end main
当前输出对数字进行排序,但不保留其名称。
答案 0 :(得分:1)
Step ([0-9]+(\s?([-~,]|to)\s?)?)+
是原始数组,而不是STL容器;您无法像pairs
和pairs.begin()
那样调用方法。
从C ++ 11开始,您可以使用std::begin()和std::end(),它们会因为支持原始数组而过载。 e.g。
pairs.end()