回答
为此,在algorithm
标题中有一个函数std::reverse
。
#include <vector>
#include <algorithm>
int main() {
std::vector<int> a;
std::reverse(a.begin(), a.end());
return 0;
}
您可以使用std::reverse
这样
std::reverse(str.begin(), str.end());
所有容器提供的内容与rbegin()
和rend()
反向视图。这两个函数返回所谓的反向迭代器,它可以像普通的一样使用,但它看起来像容器实际上是颠倒的。
#include <vector>
#include <iostream>
template<class InIt>
void print_range(InIt first, InIt last, char const* delim = "\n"){
--last;
for(; first != last; ++first){
std::cout << *first << delim;
}
std::cout << *first;
}
int main(){
int a[] = { 1, 2, 3, 4, 5 };
std::vector<int> v(a, a+5);
print_range(v.begin(), v.end(), "->");
std::cout << "\n=============\n";
print_range(v.rbegin(), v.rend(), "<-");
}
1->2->3->4->5
=============
5<-4<-3<-2<-1
,但它并不反过来在原地的载体。你可以使用std :: vector
@CashCow:呃,其中之一是没有任何操作,它是O(1)。逆转..没有那么多。大多数情况下,你并不需要一个反转的容器,你只需要*将它看作是相反的。事实上,我无法想象你实际上需要一个反向容器的情况,而这个容器不能用反向迭代器解决。 – Xeo 2012-01-16 10:54:36
@CashCow:优雅并不总是真正的优雅。在我职业生涯中的大多数情况下,我只是需要一个颠倒的看法,而不是一个颠倒的向量。在所有这些情况下,如果您要创建更多副本或转换排序,则性能将完全不必要。如果您只需要非特定顺序的前10位,您是否也会'std :: sort' 1000个元素向量,因为它比'std :: partition'更优雅?这是一种思想流派,与15年前相比,它削弱了我今天的PC体验,不同之处在于更多的周期被浪费了,其中有数十亿次。 – 2012-01-17 12:04:56
您还可以使用std::list
而不是std::vector
。 list
具有用于倒转元素的内置功能list::reverse。
- 1. 如何在openProcessing中反转向量?
- 2. C++如何反转向量中元素的顺序?
- 3. Android:如何处理纵向反转纵向和横向反转横向事件
- 4. 我会如何反转? C#
- 5. 如何将C++枚举向量转换为等效的Objective C数组/向量?
- 6. 如何将C++中的反向函数代码转换为Java
- 7. C#反向UrlPathEncode
- 8. 如何将字符串向量转换为C++中的整数向量?
- 9. 反向WPF转换
- 10. 反向式转换
- 11. C++:如何将小写转换为upercase并反向转换为ctype函数?
- 12. 反转字符串C++无反向功能
- 13. 如何反转?
- 14. c# - 如何反转二维数组
- 15. 如何在C#中反转数据集?
- 16. 如何在C中反转按位与(&)?
- 17. C#反对面向
- 18. 如何反向Qu??
- 19. C++向量的向量。阵列旋转90度
- 20. 如何反转或反转键值?
- 21. 如何将行向量转换为Eigen中的列向量?
- 22. 如何将未来[向量[UserLocation]]转换为未来[向量[User]]
- 23. 将ASP反向/转发DNS检查器转换为C#
- 24. C++:将向量转换为元组
- 25. C++的类型转换向量类
- 26. 如何将char向量转换为stringstream
- 27. PySpark:如何将行转换为向量?
- 28. 如何反转CSS3转换?
- 29. C#反转位移
- 30. Ç - 反向转炉工艺
我刚刚添加了'std'命名空间,希望您不要介意;)... – MartinStettner 2012-01-16 08:51:56
不,谢谢。刚注意到你的编辑,他们绝对足够和准确。 – 2012-01-16 08:52:37
你能解释如何反转向量的矢量?我希望v [0]与v [v.size() - 1]交换,并且v [0] [i]元素的顺序保持原样。这与行的更改顺序相似(如果向量被视为Matrix)。如果矢量被定义为:vector> v;反向(v.begin(),v.end())不会反转它。 TIA! –
2016-01-14 20:30:41