2014-02-15 14 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的原則。但是,如果這種行爲的目的是一致的,那麼取決於您的使用情況,這非常好。