我有一个函数可以提供矢量系列的数字。这一系列数字将被附加以形成一个长的长数并存储在另一个向量中。
例如
Vector1= |2|3|4|5|5|
vector2= |23455| |
空格表示一个数字的结尾,函数开始输出第二个数字系列。我认为反向迭代器和乘以10^x
在某种程度上是一种解决方案。
例如代码
vector<long long> a, fin;
for (int i = 0; i <6; i++)
{
a.push_back(i + 1); // adds 1 2 3 4 5 6 in slots of v1
}
int j = 0;
for (vector<long long>::reverse_iterator i = a.rbegin(); i != a.rend(); i++) {
// want to append v1 members to form one number 123456 and store it in first slot of vector2;
fin[0] += (a[(*i)] * (10 ^ j));
j++;
}
cout << fin[0];
答案 0 :(得分:2)
最简单的方法是使用字符串流将数字转换为字符串,然后将字符串转换回数字。
std::vector<long long> input = { 1, 2, 3, 4, 5 };
std::ostringstream oss;
for (auto i : input)
oss << i;
long long output = std::stoll(oss.str());
假设您只有一位数字,更有效的方法是:
long long output = 0;
for (auto i : input)
output = output * 10 + i;
答案 1 :(得分:1)
您未在fin
向量中添加任何元素。您还错误地将^
误认为电源功能。您需要使用std::pow:
<强>尝试:强>
#include <cmath>
#include <vector>
#include <iostream>
using namespace std;
int main ()
{
vector<long long> a;
vector<long long> fin(1); // add an element
for (int i = 0; i <6; i++)
{
a.push_back(i + 1);
}
int j = 0;
for (vector<long long>::reverse_iterator i = a.rbegin(); i != a.rend(); i++) {
// fin[0] += (a[(*i)] * (10 ^ j)); // ??
fin[0] += ((*i) * pow(10, j)); // not ^
j++;
}
cout << fin[0];
}
<强>输出:强>
123456