gpt4 book ai didi

c++ - 在 C++ 中为 map 自动生成键

转载 作者:行者123 更新时间:2023-11-30 03:24:05 25 4
gpt4 key购买 nike

我有一个创建对象并将它们存储到具有整数键的映射中的类因此,如果用户正在创建一个新对象,默认的第一个键是 100,然后如果用户决定创建更多,则它会递增 1(即 101、102 等)。我将如何自动化这个过程?

例如,假设类(class)正在创建包含教室名称的字符串对象的 vector 。

std::map<int, vector<string>> classrooms;

那么用户第一次创建实例时,第一个实例将通过整数键 100 访问,但是如果用户想要添加更多,我将如何使它递增 1。 (假设 int main 在 while 循环中运行,允许交互式命令继续创建更多教室)

最佳答案

您可以使用重载的operator () 生成 key 生成器类,以便在每次调用时生成 key 增量唯一 key ,如下所示:

#include <map>

class keyGen
{
public:
keyGen(int x): key(x) {}
int operator()(int x = 1) {
return (key += x);
}
private:
int key;
};

class someClass
{
private:
std::map<int, std::string> dataMap;
keyGen kg;

public:
someClass(): kg(0) {};
void createFoo(std::string foo)
{
dataMap.insert(std::pair<int, std::string>(kg(), foo));
}
void createBar(std::string bar)
{
dataMap.insert(std::pair<int, std::string>(kg(), bar));
}

};

int main()
{
someClass sc;
sc.createFoo("foo"); //sc::dataMap == [1, "foo"]
sc.createBar("bar"); //sc::dataMap == [2, "bar"]
return 0;
}

关于c++ - 在 C++ 中为 map 自动生成键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49994619/

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