将向量整数拆分为这些数字的整数

Splitting vector ints into an int of those digits

本文关键字:整数 数字 向量 拆分      更新时间:2023-10-16

有什么办法可以做到这一点吗?基本上,我试图将 int 的数字放入向量中,但相反。这样,如果矢量随机值为 5、6、7...我可以转换为值为"567"的整数。这甚至可能或可行吗?

以下函数可用于将整数向量转换为单个整数。

std::string Join(const std::vector<int>& intVector)
{
std::stringstream ss;
for (const auto& element : intVector)
{
ss << element;      
}
return ss.str();
}

在上面的实现中,使用了基于范围的 for 循环,因为此功能在 c++ 11 中可用。您可以使用 normal for 循环。 要将返回的字符串值转换为整数,可以使用 std::stoi 算法 (c++ 11( 或 atoi 函数。

int Join(const std::vector<int>& intVector)
{
unsigned long sum = 0;
for (const int& i : intVector)
{
sum = (sum << 3) + (sum << 1); // sum*8 + sum*2 = sum*10;
sum += i;
}
return sum;
}

是的,这是可以实现的,只需确保向量长度在您的数据类型范围内,例如int 64 位或 int 32 位

阅读有关数据类型范围的详细信息

伪代码

vector<int> vec{5, 6, 7};
int num = 0;
for(int x : vec)
num = num*10 + x;
cout<<num; // 567

艾德酮