你如何制作一个显示24,60和1的向量?

时间:2014-02-15 03:31:20

标签: c++ vector

我知道我应该知道的简单问题。我想要做的就是在给出那些参数时显示一个向量,然后我必须以相反的顺序显示它。

2 个答案:

答案 0 :(得分: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;
}

答案 1 :(得分:0)

有很多方法可以做到这一点

  1. 使用循环和索引并打印到屏幕上。
  2. 使用迭代器。
  3. 但是,当您意识到在两种情况下都输出到屏幕时,最好使用流来通过使用重载的插入运算符来封装此行为(除了这些范例之一):

    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的原则。但是,如果这种行为是有意和一致的,那么根据您的使用情况,它完全没问题。