我一直在解决一个问题:
设计一个程序,询问用户一系列的名字(没有特定的顺序)。输入最后一个人的姓名后,程序应显示按字母顺序排在第一位的姓名和按字母顺序排在最后一位的姓名。
例如,如果用户输入名字 Kristin、Joel、Adam、Beth、Zeb 和 Chris,程序将显示 Adam 和 Zeb。
这是我到目前为止的代码:
#include <iostream>
#include <set>
#include <algorithm>
using namespace std;
void displayOutput(const string& item)
{
cout << item << endl;
}
int main()
{
set<string> sortNames;
string name;
do {
cout << "Enter a name (\"end\" to finish):\t";
cin >> name;
sortNames.insert(name);
} while ( name != "end" );
for_each(sortNames.begin(), sortNames.end(), &displayOutput);
return 0;
}
到目前为止,我的代码运行良好,因为它按字母顺序显示所有输入的字符串。(附带说明一下,我不知道如何避免“结束”不显示在输出本身中。)问题是,程序只应该显示列表中的(按字母顺序)名字和姓氏。我一直在考虑它,我认为我可能必须从不同的角度来处理这个问题,但我不确定从哪里开始。任何帮助将不胜感激。