gpt4 book ai didi

c++ - 为 STL::map 使用 value_type 数组

转载 作者:行者123 更新时间:2023-11-28 07:52:32 24 4
gpt4 key购买 nike

我有以下代码:

//MyClass.h
class MyClass {
typedef std::map<std::string, int> OpMap;
static const OpMap::value_type opMap[OP_COUNT];

public:
//methods
};

//MyClass.cpp
const MyClass ::OpMap::value_type MyClass ::opMap[DDG::OP_COUNT] = {
MyClass ::OpMap::value_type("hello", 42),
MyClass ::OpMap::value_type("world", 88),
};

我需要实现函数 bool findOP(string opKey),它在 opMap 中搜索 opKey

看来我需要使用 map 类的 find 方法。但是 opMap.find(opKey) 不起作用,因为 opMap 是一对数组。怎样才能在 opMap 中有效地搜索 opKey

最佳答案

我不确定我是否理解你的代码和你的问题......但是如果你想要一个 std::mapstd::string 键关联到 int values,为什么要定义一个(键,值)对数组?

下面的呢?

std::map<std::string, int> m;
m["hello"] = 42;
m["world"] = 88;

我想如果你有一个无序数组(比如你的代码中的opMap),如果你想搜索一些东西,你可以做一个线性搜索(O(N))。仅当数组已排序时,您才可以使用例如优化搜索二进制搜索 std::lower_bound()(具有对数渐近复杂度)。

如果你想从opMap数组的内容中初始化 map ,你可以这样做:

// opMap is an array of (key, value) pairs
// m is a std::map<std::string, int>
//
// For each item in the array:
for (int i = 0; i < DDG::OP_COUNT; i++)
{
// opMap[i].first is the key;
// opMap[i].second is the value.
// Add current key-value pair in the map.
m[ opMap[i].first ] = opMap[i].second;
}

关于c++ - 为 STL::map 使用 value_type 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13463825/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com