在我的 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
,但显然这是不可能的。
至于容器,我选择了一个 vector ,因为它们可以在其中存储“无限”量的数据。我使用 itemlist
来存储曾经添加到 myClass
的所有项目,并使用 lists
来存储所有曾经创建的列表。
可以用什么方式为每个列表存储一个名称并使其链接起来?
最佳答案
我认为命名列表的最简单方法是使用std::unordered_map
http://en.cppreference.com/w/cpp/container/unordered_map
然后你就可以像这样使用你的列表了:
lists["first_list"].push_back(...);
lists["another_list"].size();
lists["create_new_list"] = {};
关于c++ - 考试C++保存列表的名称属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48558046/