反转矢量项而不是第一个?C++
Reverse vector items but not the first one? C++
我有一个矢量
std::vector<std::string> letters; // {{A, B, C,}, {A}, {B, C, D, E}}
我想颠倒顺序,但不是每个向量的第一个字母。我该怎么做?
所以它将是
{{A, C, B}, {A}, {B, E, D, C}}
我试着做:
std::reverse(letters.begin(), letters.end());
for (int i=0;i<letters.size();i++)
cout << letters[i];
但它在我身上崩溃了
您可以像下面的示例一样进行操作:
#include <iostream>
#include <algorithm>
#include <string>
#include <vector>
int main() {
std::vector<std::string> letters {"ABC", "A", "BCDE", ""};
std::for_each(letters.begin(), letters.end(), [](std::string &str) { if(!str.empty()) std::reverse(str.begin() + 1, str.end()); });
for(auto i : letters) std::cout << i << std::endl;
}
现场演示
您在代码中做错了什么:
std::reverse(letters.begin(), letters.end());
应用于初始向量(即,它反转letters
中字符串的顺序,而不反转向量的字符串)。
要反转矢量,可以使用std::reverse
:
std::reverse(letters.begin() + 1, letters.end());
要在输出时反转它们,保持向量不变,可以使用vector::rbegin()
和vector::rend()
在相反的方向上迭代向量
相关文章:
- 为什么它只打印双链接列表的第一个值,而我的程序却崩溃了
- std::find,返回所有找到的值的替代方法,而不仅仅是存在重复的向量的第一个值
- 如何仅读取文本文件中的第一个值
- 在C++中,如何在第一个"system()"结束后执行第二个"system()"?
- 查找不在标准中的第一个值::设置<int>最小-最大值
- C++:忽略第一个 cin.ignore 之后的输入
- 在C++中打印多个矢量的第一个值
- C++去除前x个元素的有效方法,在不改变向量大小的情况下将第x+1个元素推到第一个
- C++第一个cout将不会打印
- 我们可以在第一个else-if条件结束后使用另一个else-if条件吗
- OpenGL:第二个VBO破坏了第一个VBO
- 为什么第一个Dynamic_cast没有投射到基类?
- OpenGL 2D游戏只绘制第二个精灵纹理而不是第一个
- C++ 为什么程序只读取第一个值
- 在我的第一个C++程序中需要一些帮助(简单)
- 为什么我的代码在第一个 if 语句处中断?
- 是否可以从另一个类对象调用一个类函数而不继承第一个类
- 无法使我的第一个Windows OpenGL窗口抬起并运行
- 将参数初始化为构造函数,而不是第一个
- 无法在硬件模式下创建 SGX 安全区 - "invalid launch token"即使文档将无效的启动令牌指定为第一个