如何在vector c ++中将double转换为int?

时间:2015-06-25 03:33:08

标签: c++ casting

我知道第一个数组的演员。

std::vector<int> v_int;
std::vector<float> v_float(v_int.begin(), v_int.end());

但是如何转换第二个数组?

vector<int> aCol(4);
vector<vector<int>> a(2, aCol);
vector<vector<double>> b(a.begin(), a.end());// ???

在这种情况下我该怎么做?

3 个答案:

答案 0 :(得分:1)

对于编译器vector<double>for(auto&& elem: a) b.push_back(std::vector<double>(elem.begin(), elem.end())); 是完全不相关的类型,不能隐式转换为另一个。你可以做的是:

http://localhost:3000/#home

答案 1 :(得分:1)

{{1}}

答案 2 :(得分:0)

矢量矢量构造未编译的原因是

vector<vector<double>> b(a.begin(), a.end())

是使用迭代器构造b的范围,其元素类型为vector<int>。这将尝试使用b构建std::vector<double>的内部std::vector<int>,毫不奇怪它不应该编译。

将此与您的第一个示例进行比较,

std::vector<float> v_float(v_int.begin(), v_int.end());

是从元素类型为v_float的迭代器构造int的范围。这是有效的,因为允许从int转换为float,但不允许从std::vector<int>转换为std::vector<double>(或std::vector<float>)。

您可能希望转而查看a的每个元素的循环,并推回从a begin()end()构建的向量