【发布时间】:2019-03-05 01:15:14
【问题描述】:
我有一个程序可以创建std::vector 并使用push_back() 将给定值添加到其中。预期的输出是使用 iterator 和 reverse iterator 以默认顺序和反向顺序打印向量值。输出是绝对正确的,但我只是想知道是否有更好的方法来做到这一点::-
#include <iostream>
#include <vector>
using namespace std;
vector<int> myvector;
int i;
int main()
{
int n;
cin>>n;
int input;
for (i = 0; i < n; i++)
{
cin >> input;
myvector.push_back(input);
}
for (int i = 0; i < n; i++)
{
cout<<" "<<myvector[i]; //prints user vector input
}
cout<<endl;
typedef vector<int>::iterator iter_type;
iter_type from (myvector.begin());
iter_type until (myvector.end());
reverse_iterator<iter_type> rev_until (from);
reverse_iterator<iter_type> rev_from (until);
while (rev_from != rev_until)
cout << ' ' << *rev_from++; //prints reversed vector
return 0;
}
想出了一个替代方法
#include <vector>
#include <iostream>
int main()
{
int n;
std::cin>>n;
std::vector<int> g1;
int a[40];
std::vector<int>::iterator i;
std::vector<int>::reverse_iterator it;
for(int i=0;i<n;i++)
{
std::cin>>a[i];
g1.push_back(a[i]);
}
for (auto i = g1.begin(); i != g1.end(); ++i)
std::cout << *i << " ";
std::cout<<"\n";
for (auto it = g1.rbegin(); it != g1.rend(); ++it)
std::cout << *it << " ";
return 0;
}
【问题讨论】:
标签: c++ algorithm c++11 iterator stdvector