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

Pro*_*oid 0 c++ vector hashmap dimension

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

vector<HWND, long> hwnd;
Run Code Online (Sandbox Code Playgroud)

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

hwnd[0] // Get HWND and long
hwnd[1] // Get HWND and long
Run Code Online (Sandbox Code Playgroud)

请求向量解决方案或使用hashmap解决方案是否正确?我还没有使用hashmap这就是为什么我想知道这个.提前致谢.

Sir*_*ius 6

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

hwnd[0].first
hwnd[0].second
Run Code Online (Sandbox Code Playgroud)

这使得绝对不清楚哪个是手柄,哪个是长的.

你应该使用一个struct(我在这里使用count作为用例的例子,你自己的long可能有完全不同的含义):

struct HandleCount {
    HWND handle;
    long count;
};
Run Code Online (Sandbox Code Playgroud)

所以你的代码看起来像:

std::vector<HandleCount> hwnd;

hwnd[0].handle
hwnd[0].count
Run Code Online (Sandbox Code Playgroud)

因此,虽然通过使用补充类型会失去一点简单性,但您可以简单地理解代码.