Ahm*_*nas 3 c++ visual-c++ c++11
嘿伙计们希望你能帮助我.
我想知道是否可以隐式地将一种类型的矢量转换为另一种类型的矢量
即一些使这个代码工作的方法(显然这是我想要做的简化问题)
std::vector<int> intVec;
intVec.push_back(1);
std::vector<double> doubleVec = intVec;
std::vector<double> doubleVec2;
doubleVec2 = intVec;
Run Code Online (Sandbox Code Playgroud)
Mik*_*our 12
不,不同的矢量类型之间没有转换(隐式或其他).
您可以从迭代器范围初始化它:
std::vector<double> doubleVec(intVec.begin(), intVec.end());
Run Code Online (Sandbox Code Playgroud)
也许将它包装在一个函数中:
template <typename To, typename From>
To container_cast(From && from) {
using std::begin; using std::end; // Koenig lookup enabled
return To(begin(from), end(from));
}
auto doubleVec = container_cast<std::vector<double>>(intVec);
Run Code Online (Sandbox Code Playgroud)