C++ 如何将向量c+中的double转换为int+;?
我从第一阵就知道了演员阵容C++ 如何将向量c+中的double转换为int+;?,c++,casting,C++,Casting,我从第一阵就知道了演员阵容 std::vector<int> v_int; std::vector<float> v_float(v_int.begin(), v_int.end()); std::vector v_int; 向量v_浮点(v_int.begin(),v_int.end()); 但如何转换第二个数组 vector<int> aCol(4); vector<vector<int>> a(2, aCol); vector
std::vector<int> v_int;
std::vector<float> v_float(v_int.begin(), v_int.end());
std::vector v_int;
向量v_浮点(v_int.begin(),v_int.end());
但如何转换第二个数组
vector<int> aCol(4);
vector<vector<int>> a(2, aCol);
vector<vector<double>> b(a.begin(), a.end());// ???
向量aCol(4);
载体a(2,aCol);
向量b(a.begin(),a.end());/???
在这种情况下,我应该怎么做?对于编译器而言,
向量
和向量
是完全不相关的类型,不能隐式地相互转换。您可以做的是:
for(auto&& elem: a)
b.push_back(std::vector<double>(elem.begin(), elem.end()));
用于(自动和元素:a)
b、 向后推(std::vector(elem.begin(),elem.end());
向量b;
b、 储备(a.size());
用于(常量自动和元素:a){
b、 向后放置(元素开始(),元素结束());
}
向量构造的向量未编译的原因是
vector<vector<double>> b(a.begin(), a.end())
是从元素类型为int
的迭代器构建v_float
的范围。这是因为允许从int转换为float,但不能从std::vector
转换为std::vector
(或std::vector
)
相反,您可能希望查看通过
a
的每个元素的循环,并推回由a
的begin()
和end()
构建的向量,以将std::vector的内容复制到std::vector
?您想要std::vector v_int(v_float.begin(),v_float.end())代码>?你遇到了什么问题?向量aCol(4);向量a(2,aCol);向量b(a.begin(),a.end())@윤희동, 我还是不知道你在问什么。你想“转换”什么?我想这只是这个问题的重复。
vector<vector<double>> b(a.begin(), a.end())
std::vector<float> v_float(v_int.begin(), v_int.end());