gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 05:13:44 26 4
gpt4 key购买 nike

我正在尝试按 int 对数组 pairs 进行排序,但我的排序显示“无法解析标识符”到 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

更新/编辑:我得到了我的工作……在某种程度上。我删除了给我错误的代码行,它现在对我的数字数组进行排序,这是我想要的一半。但是现在如何在不使用我在此修复之前拥有的 pairs 变量的情况下保留名称及其各自的编号?前任数组编号[5]={5, 2, 9, 11, 27};数组名[5]={“史蒂夫”、“约翰”、“鲍勃”、“拉里”、“帕特里克”};排序后的输出:约翰:2 史蒂夫:5 鲍勃:9 拉里:11 帕特里克: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

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

最佳答案

pairs 是原始数组,不是 STL 容器;您不能像 pairs.begin()pairs.end() 那样调用方法。

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

std::sort(std::begin(pairs), std::end(pairs), compare_pairs_second<std::less>());

关于C++ 排序无法解析标识符的开始和结束?(将数组保持在一起),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43795735/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com