将向量<int> 转换为整数

新手上路,请多包涵

我一直在寻找用于将整数向量转换为普通整数的预定义函数,但我找不到。

 vector<int> v;
v.push_back(1);
v.push_back(2);
v.push_back(3);

需要这个:

 int i=123 //directly converted from vector to int

有没有可能的方法来实现这一目标?

原文由 Chirag Shah 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 507
2 个回答

使用 C++ 11:

 reverse(v.begin(), v.end());
int decimal = 1;
int total = 0;
for (auto& it : v)
{
    total += it * decimal;
    decimal *= 10;
}

编辑:现在应该是正确的方法。

编辑 2:请参阅 DAle 的答案以获得更短/更简单的答案。

为了将其包装成一个函数以使其可重用。谢谢@Samer

 int VectorToInt(vector<int> v)
{
    reverse(v.begin(), v.end());
    int decimal = 1;
    int total = 0;
    for (auto& it : v)
    {
        total += it * decimal;
        decimal *= 10;
    }
    return total;
}

原文由 Rafael 发布,翻译遵循 CC BY-SA 3.0 许可协议

如果向量的元素是数字:

 int result = 0;
for (auto d : v)
{
    result = result * 10 + d;
}

如果不是数字:

 stringstream str;
copy(v.begin(), v.end(), ostream_iterator<int>(str, ""));
int res = stoi(str.str());

原文由 DAle 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题