今天在写个小的十进制转换程序时,遇到个问题就是关于vector容器的逆序访问问题,后来知道其中有多种方法可以解决,下面介绍我应用的两种简单方法,顺便熟悉一下vector容器的相关函数。下面是相关代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
#include <iostream> #include <vector> #include <algorithm> using namespace std; int main() { int a = 0, d = 0, answer1 = 0, mod = 0, answer2 = 0; vector<int> m; cout << "Please input the number :" << endl; cin >> a; cout << "Please input the scale :" << endl; cin >> d; while (a) { mod = a%d; a = a / d; m.push_back(mod); } //第一种 for (vector<int>::reverse_iterator it = m.rbegin(); it != m.rend(); it++) { answer2 = (*it) + answer2 * 10; } //第二种 reverse(m.begin(), m.end()); for (vector<int>::iterator it = m.begin(); it != m.end(); it++) { answer1 = (*it)+answer1*10; } cout << answer1 << endl; cout << answer2 << endl; } |
程序中用蓝色和黄色标记的分别是两种不同的方法,第一种利用的是逆置迭代器,要注意逆置迭代器的初始化。第二种是利用头文件<algorithm>中的函数reverse进行容器的逆置,要注意包含头文件。两种方法都很简单和方便。
转自:https://www.cnblogs.com/helloforworld/p/5452554.html