考试C++保存列表的名称属性

exam C++ save name attribute of list

本文关键字:属性 列表 C++ 保存 考试      更新时间:2023-10-16

在C++考试期间,我发现我在可能应该相对简单的事情上遇到了一些困难。我想我忽略了我的问题。为了不因在线发布部分考试而遇到麻烦,我将对我遇到麻烦的部分进行非常简单的表示。

期望的是制作一个类myClass,我可以在其中添加项目item。然后我应该能够列出我想要的一些项目。列表中能够包含的项目数量应该是无限的。每个列表都应该有一个特定的(唯一的)名称。我还被告知不要为列表创建一个新类,而要自己选择合适的容器。

myClass::myClass(){
itemlist= {};
lists= {};
}
void myClass::addItem(Item &item){
itemlist.emplace_back(item);
}
void myClass::makeList(string listname){
vector <Item> list = {};
// list .name = listname
lists.emplace_back(list);
}
void myClass::addItemToList(string listName, Item &item){
for (int i=0; i<lists.size; i++){
if lists[i].name == listName {
lists.emplace_back(item);
return;
}
}
}

我不知道如何在不为列表创建新类的情况下将名称链接到列表。我想过存储另一个包含列表名称的列表并使用它,但这样做似乎是错误的,因为它们实际上并没有链接。试图查找是否有办法从字符串 listname 参数listname列表变量,但显然这是不可能的。

至于容器,我选择了一个向量,因为它们可以在其中存储"无限"的数据量。我使用itemlist来存储曾经添加到myClass的所有项目,lists存储所有曾经创建的列表。

如何存储每个列表的名称并使其链接?

我认为命名列表的最简单方法是使用std::unordered_maphttp://en.cppreference.com/w/cpp/container/unordered_map

然后,您将能够像这样使用您的列表:

lists["first_list"].push_back(...);
lists["another_list"].size();
lists["create_new_list"] = {};

也许您正在寻找的"将名称链接到列表"是一个std::map

类似的东西std::map<std::string, std::vector<Item>>