首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何反转C++向量?

如何反转C++向量?
EN

Stack Overflow用户
提问于 2012-01-16 16:44:30
回答 5查看 175.5K关注 0票数 178

在C++中是否有一个内置的向量函数来反转向量?

或者你只需要手动完成?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-01-16 16:46:21

algorithm头中有一个用于此目的的函数std::reverse

代码语言:javascript
复制
#include <vector>
#include <algorithm>

int main() {
  std::vector<int> a;
  std::reverse(a.begin(), a.end());
  return 0;
}
票数 312
EN

Stack Overflow用户

发布于 2012-01-16 16:48:24

您可以像这样使用std::reverse

代码语言:javascript
复制
std::reverse(str.begin(), str.end());
票数 26
EN

Stack Overflow用户

发布于 2020-06-17 16:07:50

通常,您想要反转向量的原因是因为您通过在末尾推送所有项目来填充它,但实际上是以相反的顺序接收它们。在这种情况下,您可以通过使用deque并直接将它们推到前面来反转容器。(或者您也可以使用vector::insert()在前面插入项目,但是当有很多项目时,这样做会很慢,因为每次插入时它都必须将所有其他项目拖到一起。)所以与之相对的是:

代码语言:javascript
复制
std::vector<int> foo;
int nextItem;
while (getNext(nextItem)) {
    foo.push_back(nextItem);
}
std::reverse(foo.begin(), foo.end());

相反,您可以这样做:

代码语言:javascript
复制
std::deque<int> foo;
int nextItem;
while (getNext(nextItem)) {
    foo.push_front(nextItem);
}
// No reverse needed - already in correct order
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8877448

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档