C ++排序无法解析标识符的开始和结束?(将数组保持在一起)

时间:2017-05-05 02:52:38

标签: c++ sorting netbeans bubble-sort

我正在尝试按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

当前输出对数字进行排序,但不保留其名称。

1 个答案:

答案 0 :(得分:1)

Step ([0-9]+(\s?([-~,]|to)\s?)?)+ 是原始数组,而不是STL容器;您无法像pairspairs.begin()那样调用方法。

从C ++ 11开始,您可以使用std::begin()std::end(),它们会因为支持原始数组而过载。 e.g。

pairs.end()