我想知道什么是更好用以及为什么:
之前我曾经使用STL容器创建类型,但最近我发现API使用类似结构的类型,我认为这是由于使用C而不是C ++,但我想知道什么是最好的在性能和记忆方面。
在:
typedef std::tuple<std::string, int, int, bool> SomeType;
现在:
typedef struct tagSomeType { std::string sVar; int iVar, iVar2; bool bVar; } SomeType;
谢谢
[编辑]我把这个元组的例子让它可见,但是例如
typedef std::pair<int, int> iCoord; /* VS */ struct iCoord{int x, y;};
似乎唯一不同之处在于struct比STL Container具有更高的可读性
答案 0 :(得分:3)
内存使用和性能没有显着差异。所以主要标准应该是可读性。
一个区别是,在struct
中,每个元素都有一个名称,而tuple
的情况则不然。特别是如果你有更多的2或3个元素,这可以使结构更具可读性。
顺便说一下,你的struct声明是C风格。在C ++中,您可以这样写:
struct SomeType { std::string sVar; int iVar, iVar2; bool bVar; };
答案 1 :(得分:2)
这个问题没有独特的答案,这取决于你的情况。我个人认为,如果你有两个以上的变量你应该使用struct,除非你有充分的理由不这样做。在结构中,您可以为变量指定名称,这样您就不必记住数字1是这个而数字2是。