我需要在一个 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/