C++ 如何在 vector 中存储两种数据类型

标签 c++ vector hashmap dimension

我需要在一个 vector 中存储两个宽度不同的数据类型的值,例如:

vector<HWND, long> hwnd;

然后通过索引获取并获取两个值:

hwnd[0] // Get HWND and long
hwnd[1] // Get HWND and long

为此寻求 vector 解决方案或使用散列图解决方案是否正确?我还没有使用过 HashMap ,这就是为什么我想知道这一点。提前致谢。

最佳答案

虽然使用 std::pair 是一个正确的解决方案,但它失去了一些清晰度,因为您将像这样访问元素:

hwnd[0].first
hwnd[0].second

这使得完全分不清哪个是句柄,哪个是长。

您应该改为使用结构(我在这里使用 count 作为用例示例,您自己的 long 可能具有完全不同的含义):

struct HandleCount {
    HWND handle;
    long count;
};

所以你的代码应该是这样的:

std::vector<HandleCount> hwnd;

hwnd[0].handle
hwnd[0].count

因此,虽然您通过使用补充类型失去了一点简单性,但您反而受益于理解代码的简单性。

关于C++ 如何在 vector 中存储两种数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33434030/

相关文章:

c++ - 无法使用 QFileDialog (Qt 5.7) 打开文件

c++ - 如何在 C++ 中创建原子枚举?

c++ - 具有不同类型的类

java - 如何按照放入 int map 的顺序从 hashmap 获取键和值

java - 计算 HashMap 索引的平均值

c++ - C++按有效位查找范围ip地址

c++ - 错误 : cast from 'void*' to 'int' loses precision

c++ - 像复制一样在STL中转换数组

c++ - 如何将 vector 的第一个元素移动到另一个 vector 的末尾

java - 如何在 Java 中将 hashmap 的值转换为 String