#include <iostream>
#include <algorithm>
#include <vector>
#include <string>
int main() {
// 存储字符串的向量
std::vector<std::string> fruits;
// 接受用户输入的字符串,直到用户输入空字符串
while (true) {
std::cout << "Enter a fruit (or enter an empty string to finish): ";
std::string input;
std::getline(std::cin, input);
// 检查输入是否为空,如果是则退出循环
if (input.empty()) {
break;
}
// 将输入的字符串添加到向量中
fruits.push_back(input);
}
// 对字符串进行排序
std::sort(fruits.begin(), fruits.end());
// 输出排序后的字符串,使用迭代器
std::cout << "Sorted fruits: ";
for (auto it = fruits.begin(); it != fruits.end(); ++it) {
std::cout << *it << " ";
}
std::cout << std::endl;
return 0;
}
在这个版本中,使用了迭代器 it
遍历 fruits
向量中的元素,并输出每个元素。注意 *it
用于获取迭代器当前位置的元素值。
那么有人想问解析这一句auto it = fruits.begin()
解析::::
这一句
auto it = fruits.begin();
定义了一个迭代器it
,它被初始化为指向fruits
向量的第一个元素的位置。让我详细解释这个语句的各个部分:
fruits
: 这是存储字符串的std::vector<std::string>
容器。
fruits.begin()
: 这是std::vector
提供的成员函数,返回一个指向容器第一个元素的迭代器。begin()
函数返回的迭代器指向容器的第一个元素。
auto
: 这是C++11引入的关键字,用于自动推导变量的类型。在这里,auto
被用来自动推导迭代器的类型。
it
: 这是一个变量名,可以根据需要进行更改。在这里,它被用作指向容器第一个元素的迭代器。综合起来,
auto it = fruits.begin();
这一句创建了一个迭代器it
,它指向fruits
向量的第一个元素。这是一个常见的用法,用于迭代容器中的元素,执行诸如遍历、搜索或修改等操作。