我知道我应该知道的简单问题。我想要做的就是在给出那些参数时显示一个向量,然后我必须以相反的顺序显示它。
答案 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)
有很多方法可以做到这一点
但是,当您意识到在两种情况下都输出到屏幕时,最好使用流来通过使用重载的插入运算符来封装此行为(除了这些范例之一):
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的原则。但是,如果这种行为是有意和一致的,那么根据您的使用情况,它完全没问题。