#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; }
在这个版本中,使用了迭代器
那么有人想问解析这一句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 向量的第一个元素。这是一个常见的用法,用于迭代容器中的元素,执行诸如遍历、搜索或修改等操作。