2014-02-15 16 views
-2

简单的问题,我知道我应该知道。我所要做的就是在给出这些参数时显示一个向量,然后我必须以相反的顺序显示它。你如何制作一个显示24,60和1的矢量?

+0

你是什么意思_display_矢量?在控制台上? –

+0

我想输出这些数字是的。 – user3311359

+0

那么你正在寻找'std :: cout'。谷歌它,并找出其余的自己 - 有很多例子! –

回答

1

先看看cplusplus.com。 以下代码在C++ 98中编译。

#include <cstdlib> 
#include <iostream> 
#include <vector> 
using namespace std; 

int main(int argc, char** argv) { 
    vector<int> myvec; 
    myvec.push_back(1); myvec.push_back(2); myvec.push_back(3); 
    for(vector<int>::iterator it = myvec.begin(); it!=myvec.end(); ++it){ 
     cout<<*it<<" "; 
    }  
    cout<<"\nRverse Order "<<endl; 
    for(vector<int>::reverse_iterator it = myvec.rbegin(); it!=myvec.rend(); ++it){ 
     cout<<*it<<" "; 
    } 
    return 0; 
} 
0

有许多方法可以做到这

  1. 使用循环和指标,并打印到屏幕上。
  2. 使用迭代器。

但是,当你意识到在这两种情况下你都输出到屏幕上时,使用流重载插入操作符来封装这种行为可能是一个更好的主意(除了其中之一范例):

std::ostream& operator<<(std::ostream& out, const vector<int>& v) { 
    for (std::vector<int>::const_reverse_iterator it = v.rbegin(); it != v.rend(); ++it) { 
     out << *it << " ";//you can use a newline here if you wanted every element on a new line 
    } 
    return out; 
} 

用法:

vector<int> vec; 
//fill `vec` with data 
//... 
std::cout << vec << std::endl; 

警告

虽然这是一个明智的想法,因为它可以说是更加面向对象的,但是它抽象出提取操作符的含义,因为它违反了least surprise的原则。但是,如果这种行为的目的是一致的,那么取决于您的使用情况,这非常好。