C++ C++;-如何告知未使用或未设置数据字段?

C++ C++;-如何告知未使用或未设置数据字段?,c++,data-structures,C++,Data Structures,我有一个std::vector,其中T是一种由小型数值字段组成的类型,例如ints或float;假设我的T总共有4个字段,因此,例如在T中,我有一个int、一个uint32\u T、一个double和一个float 有时我需要全部4个,有时我只需要1个,而所有其他的都不需要,或者我可以很容易地丢弃它们,因为当我阅读它们时它们处于“默认值”(0或0.0) 有一种方法可以设计我的类型T,例如,当我插入一组新值时,我可以将未使用的字段标记为未使用 显然,我的问题是,我不能对每个组合使用不同的t(对每个

我有一个
std::vector
,其中
T
是一种由小型数值字段组成的类型,例如
ints
float
;假设我的
T
总共有
4个
字段,因此,例如在
T
中,我有一个
int
、一个
uint32\u T
、一个
double
和一个
float

有时我需要全部4个,有时我只需要1个,而所有其他的都不需要,或者我可以很容易地丢弃它们,因为当我阅读它们时它们处于“默认值”(
0
0.0

有一种方法可以设计我的类型
T
,例如,当我插入一组新值时,我可以将未使用的字段标记为未使用

显然,我的问题是,我不能对每个组合使用不同的
t
(对每个组合来说,这也是一件疯狂的事情),我希望组合一个紧凑的结构(甚至不花时间插入我没有使用的值)每个场景都有一个公共类型,因此用户只需检查该记录是否被使用


这是标准C++ 11还是C++ 03?< /p> < p>这是不可能的。根据定义,每个字段都被使用

如果您不需要类的某些实例的字段,那么您有一些替代方法。例如:

  • 使用具有特殊含义的特定值。例如:“如果 有些人的年龄是-1岁,这意味着我不知道他们的年龄,也不知道他们的年龄 与此无关。”
  • 使用附加布尔字段
    是否使用了
    实际存储是否使用字段X。然后,在你的 程序逻辑,在适当的位置使用该字段。这不是 我推荐的设计,但在某些非常特殊的情况下可能 有道理
  • 一个指针。您可以使用
    int*
    字段代替
    int
    。如果指针为NULL,则不使用该值。否则,它就是

  • 这是不可能的。根据定义,每个字段都被使用

    如果您不需要类的某些实例的字段,那么您有一些替代方法。例如:

  • 使用具有特殊含义的特定值。例如:“如果 有些人的年龄是-1岁,这意味着我不知道他们的年龄,也不知道他们的年龄 与此无关。”
  • 使用附加布尔字段
    是否使用了
    实际存储是否使用字段X。然后,在你的 程序逻辑,在适当的位置使用该字段。这不是 我推荐的设计,但在某些非常特殊的情况下可能 有道理
  • 一个指针。您可以使用
    int*
    字段代替
    int
    。如果指针为NULL,则不使用该值。否则,它就是

  • 这是不可能的。根据定义,每个字段都被使用

    如果您不需要类的某些实例的字段,那么您有一些替代方法。例如:

  • 使用具有特殊含义的特定值。例如:“如果 有些人的年龄是-1岁,这意味着我不知道他们的年龄,也不知道他们的年龄 与此无关。”
  • 使用附加布尔字段
    是否使用了
    实际存储是否使用字段X。然后,在你的 程序逻辑,在适当的位置使用该字段。这不是 我推荐的设计,但在某些非常特殊的情况下可能 有道理
  • 一个指针。您可以使用
    int*
    字段代替
    int
    。如果指针为NULL,则不使用该值。否则,它就是

  • 这是不可能的。根据定义,每个字段都被使用

    如果您不需要类的某些实例的字段,那么您有一些替代方法。例如:

  • 使用具有特殊含义的特定值。例如:“如果 有些人的年龄是-1岁,这意味着我不知道他们的年龄,也不知道他们的年龄 与此无关。”
  • 使用附加布尔字段
    是否使用了
    实际存储是否使用字段X。然后,在你的 程序逻辑,在适当的位置使用该字段。这不是 我推荐的设计,但在某些非常特殊的情况下可能 有道理
  • 一个指针。您可以使用
    int*
    字段代替
    int
    。如果指针为NULL,则不使用该值。否则,它就是

  • 您提示的是可选类型。您可能需要重新设计架构,这样就不需要存储不必要的值。但是,如果您仍然希望这样做,有:

    如果你不想使用

    std::vector< optional<T> >
    
    std::vector
    
    从库中,可以使用标准库中的

    std::vector< std::pair<T,bool> >
    
    std::vector
    

    并且应该在中提供。

    您提示的是可选类型。您可能需要重新设计架构,这样就不需要存储不必要的值。但是,如果您仍然希望这样做,有:

    如果你不想使用

    std::vector< optional<T> >
    
    std::vector
    
    从库中,可以使用标准库中的

    std::vector< std::pair<T,bool> >
    
    std::vector
    

    并且应该在中提供。

    您提示的是可选类型。您可能需要重新设计架构,这样就不需要存储不必要的值。但是,如果您仍然希望这样做,有:

    如果你不想使用

    std::vector< optional<T> >
    
    std::vector
    
    从库中,可以使用标准库中的

    std::vector< std::pair<T,bool> >
    
    std::vector
    

    并且应该在中提供。

    您提示的是可选类型。你可能想重新设计