我的问题与C++中的数字类型转换有关。一个非常普通的方法是使用static_cast,例如:
float a;
int b;
a = 3.14;
b = static_cast<int>(a);
然后,如何进行数字 vector 类型转换?我们可以继续使用static_cast吗?我做了以下实验:
typedef vector<int> IntVector;
typedef vector<float> FloatVector;
IntVector myvector;
myvector.push_back(3);
myvector.push_back(4);
myvector.push_back(5);
// Solution 1 (successful)
FloatVector solution1 ( myvector.begin(), myvector.end() );
for(int i=0; i<solution1.size(); i++)
cout<<solution1[i]<<endl;
// Solution 2 (failed)
FloatVector solution2;
solution2 = static_cast<FloatVector> (myvector);
对于数字 vector 类型,似乎无法使用static_cast进行转换。我想知道这个问题是否有好的解决方案。谢谢!
最佳答案
该语言直接支持从一种数字类型到另一种数字类型的转换。您甚至不需要static_cast
,只需分配即可。这种转换涉及值的逻辑复制,而不是值表示的重新解释。
该语言不直接支持不同类型的数组之间的转换,或者不支持不同类型的std::vector
的转换。
但是,正如您所发现的,对复制元素有一些支持,然后,当每个元素为数字时,每个元素都会获得对数字类型转换的内置支持。
关于c++ - 如何在C++中转换不同的数值 vector 类型,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11773841/