【发布时间】:2018-05-24 05:45:52
【问题描述】:
有没有办法做到这一点?基本上,我正在尝试将 int 的数字放入向量的过程,而不是相反。这样,如果vectorrandom 值为5、6、7...我可以转换为值为“567”的int。这甚至可能或可行吗?
【问题讨论】:
-
一切皆有可能,你尝试了什么?
-
这是作业吗?
有没有办法做到这一点?基本上,我正在尝试将 int 的数字放入向量的过程,而不是相反。这样,如果vectorrandom 值为5、6、7...我可以转换为值为“567”的int。这甚至可能或可行吗?
【问题讨论】:
以下函数可用于将整数向量转换为单个整数。
std::string Join(const std::vector<int>& intVector)
{
std::stringstream ss;
for (const auto& element : intVector)
{
ss << element;
}
return ss.str();
}
在上面的实现中,使用了基于范围的 for 循环,因为此功能在 c++ 11 中可用。您可以使用普通的 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;
}
【讨论】:
unsigned long 中,但以 int 形式返回。
是的,这是可以实现的,只要确保向量长度在您的数据类型范围内,例如 int 64bit 或 int 32bit。
阅读更多关于Data type ranges的信息
伪代码
vector<int> vec{5, 6, 7};
int num = 0;
for(int x : vec)
num = num*10 + x;
cout<<num; // 567
【讨论】: