用迭代器将string字符串每三个分割存放在vector中并逆序输出
时间: 2024-03-14 09:45:33 浏览: 97
好的,我理解了你的要求。以下是实现该功能的示例C++代码:
```cpp
#include <iostream>
#include <string>
#include <vector>
int main() {
std::string str = "abcdefghi";
std::vector<std::string> vec;
// 将字符串每三个分割存放在vector中
for (auto it = str.cbegin(); it != str.cend(); std::advance(it, 3)) {
vec.emplace_back(it, std::next(it, 3));
}
// 逆序输出vector中的元素
for (auto it = vec.crbegin(); it != vec.crend(); ++it) {
std::cout << *it << ' ';
}
std::cout << std::endl;
return 0;
}
```
输出结果为:
```
ihg fed cba
```
以上代码中,我们利用了string的迭代器,每次取3个字符存放到vector中,并利用vector的反向迭代器实现逆序输出。
相关问题
std::greater<string>可以嘛
`std::greater<string>` 是 C++ 标准库中的一个模板,它定义了一个比较器用于对 `string` 类型的对象进行降序排列。当你想要根据字符串的字母顺序(反向)来进行排序时,它可以派上用场。
然而,在上述提到的场景中,`const std::map<int, string>&` 的问题与 `std::greater<string>` 没有直接关系。`const` 关键字限制了 map 对象不会在函数内部被修改,包括添加或删除元素。如果你试图在 `const` 函数或参数中使用 `[]` 来访问 map,确实会因为 `[]` 运算符可能改变 map 的状态而引发错误。
关于 `std::greater<string>` 的使用示例,你可以这样:
```cpp
// 假设你有一个map并想按字母逆序排序
std::vector<std::pair<int, string>> sorted_map(my_map);
std::sort(sorted_map.begin(), sorted_map.end(), std::greater<std::pair<int, string>>()); // 注意这里用的是pair,不是string
// 如果你想保持原始map不变,可以用map的迭代器
for (auto it = my_map.rbegin(); it != my_map.rend(); ++it) {
std::cout << "Key: " << it->first << ", Value: " << it->second << '\n'; // 从后往前打印
}
```
阅读全文