输入若干英文单词,使其按长度从小到大输出,用二维数组怎么写
时间: 2024-12-23 12:27:10 浏览: 4
要使用二维数组(vector<vector<char>>)来存储单词并按照长度排序,你可以这样做:
首先,定义一个结构体或类来表示单词及其长度,然后创建一个二维数组来存储这些单词。这里我们使用`std::string`代替字符数组,因为它更方便处理字符串。
```cpp
#include <iostream>
#include <vector>
#include <algorithm>
// 假设我们有一个名为WordInfo的简单结构体,包含单词和长度
struct WordInfo {
std::string word;
size_t length;
};
bool compareByLength(const WordInfo& a, const WordInfo& b) {
return a.length < b.length;
}
int main() {
// 创建一个二维数组,假设从标准输入读取单词
std::vector<std::vector<char>> words; // 注意这是字符数组,但我们用std::string包装
for (std::string line; std::getline(std::cin, line);) {
if (!line.empty()) { // 检查是否为空行
words.push_back(line);
}
}
// 将所有单词转换为WordInfo类型并添加长度信息
std::vector<WordInfo> wordInfos(words.size());
for (size_t i = 0; i < words.size(); ++i) {
wordInfos[i].word = words[i];
wordInfos[i].length = wordInfos[i].word.length();
}
// 使用sort函数对WordInfo进行排序
std::sort(wordInfos.begin(), wordInfos.end(), compareByLength);
// 输出按长度排序后的单词
for (const WordInfo& info : wordInfos) {
std::cout << "Word: " << info.word << ", Length: " << info.length << std::endl;
}
return 0;
}
```
这段代码首先读取一行行的输入,将其转换为二维字符数组(实际上还是字符串),然后构建`WordInfo`结构体的集合。接着,使用`std::sort`函数按照`compareByLength`比较器对它们进行排序,最后打印出结果。
阅读全文