c++ - 在容器之间传输数据时如何解决可能丢失数据的警告?

标签 c++

我正在尝试将数据从一个容器传输到另一个:

#include <vector>
int main()
{
    std::vector<int>   input_data;
    std::vector<float> output_data;

    output_data.insert(output_data.end(), input_data.begin(), input_data.end());
}

在 VS2005 中,我在 base.hpp 中收到三个 C4244 警告“从‘const int’到‘const float’的转换,可能会丢失数据。”

现在我明白了这个警告,这是一个合法的警告。但是,在我的特定情况下,数据丢失可以忽略不计。有什么方法可以在不必像这样循环的情况下确认警告吗?

for (std::vector<int>::const_iterator it; it != input_data.end(); ++it)
{
    output_data.push_back(static_cast<float32>(*it));
}

最佳答案

在 Visual Studio 中,您应该能够通过使用 #pragma 指令来绕过警告(这样做是完全有效的,因为您知道警告并且只是希望抑制它),例如,您的主要功能看起来像:

#include <vector>
int main()
{
    std::vector<int>   input_data;
    std::vector<float> output_data;

#pragma warning(suppress: 4244)
    output_data.insert(output_data.end(), input_data.begin(), input_data.end());
}

这将抑制以下代码行的警告 C4244(后续或前面的行仍会发出该警告)。如果您想禁用较大代码块的警告发射,您可能希望查看其他 #pragma warning directives .

关于c++ - 在容器之间传输数据时如何解决可能丢失数据的警告?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17815391/

相关文章:

c++ - #define mockable virtual 在 C++ 中

c++ - const std::shared_ptr&const正确性

c++ - 将 8 个 bool 值保存到 1 个字节中

c++ - 对已实现所有虚函数的 vtable 的 undefined reference

c++ - 参数问题帮助

c++ - 是否有帮助组织#includes 的工具?

c++ - QML ListView 和按键导航 - 单键事件的处理

c++ - Luabind:派生类作为参数

C++ 我知道数组长度,但想知道是否有一种更简洁的方法来定义数组元素

c++ - 初始化 const 对象中的引用