我 希望 将 double vector 转换为浮点 vector 。而且我不希望 Visual Studio 抛出警告 C4244,“可能丢失数据”,即缩小转换。请不要发表评论或回答说我不应该这样做。我知道后果。我只是想抑制警告。在此特定功能范围之外禁用警告是 Not Acceptable ,例如全局通过项目设置。我也想使用 vector::copy 或 vector::assign。使用 static_cast 避免通过 transform() 或 for_each() 发出警告是......对我的口味来说太明确了。所以这个问题是如何禁用警告,而不是避免它。我的警告抑制尝试不起作用:vector<float> DoubleVectorToFloat( vector<double> & x ){ #pragma warning( push ) #pragma warning( disable : 4244 ) return vector<float>( x.begin(), x.end() ); #pragma warning( pop )}我知道禁用警告是不好的。但一种尺寸并不适合所有人。我的库是实时的,处理速度为 10's MiB/s。我想要调用模板 _Copy_unchecked1(etc);我不想支付错误检查的性能损失。 最佳答案 要禁用此类警告,您可能必须将此函数放入其自己的模块中并禁用顶部的警告:// top-of-file#pragma warning( disable : 4244 )// All your includes herestd::vector<float> DoubleVectorToFloat( std::vector<double> & x ){ return std::vector<float>( x.begin(), x.end() );}// end-of-file关于c++ - 如何为 std::vector 复制禁用 Visual Studio 警告 C4244 或使用隐式收缩转换进行分配,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46891586/