繁体   English   中英

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

[英]How do I convert a double to int in vector c++?

我知道第一个阵列的演员。

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());// ???

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

对于编译器, vector<int>vector<double>是完全不相关的类型,不能隐式地转换为另一个。 你能做的是:

for(auto&& elem: a)
    b.push_back(std::vector<double>(elem.begin(), elem.end()));
vector<vector<double>> b;
b.reserve(a.size());
for (const auto& elem : a) {
  b.emplace_back(elem.begin(), elem.end());
}

你的矢量矢量构造没有编译的原因是因为

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

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

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

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

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

您可能希望改为查看循环遍历a每个元素并推回从abegin()end()构造的向量

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM