我想为矢量的内容制作一个编号列表,根据矢量中有多少东西缩小或增加,因为用户可以随意添加或删除矢量中的内容。
在此项目中,用户可以从菜单中选择以编辑矢量1.添加书籍,2。显示矢量中所有书籍的列表,以及3.删除书籍。下面看到的功能是选项3,删除一本书。正如您所看到的,我已将'y'设置为被删除的用户选择,我现在需要的是一种在用户的编号列表中列出书籍(我的矢量bookCollection的内容)的方法。
int delBook(vector<string> *bookCollection)
{
int y;
for (vector<string>::iterator bIter = bookCollection->begin(); bIter < bookCollection->end(); bIter++)
{
if (bookCollection->at(y+1) == *bIter)
{
bookCollection->erase(bIter);
}
}
}
我希望删除选择在控制台中看起来像这样:
“第四册”
输入您要删除的图书编号:“4”
但是可以根据向量中添加了多少字符串来缩小或增加,因此下次用户选择“3.删除书籍”时会显示:
“预订三”
输入您要删除的图书编号:
我对编程仍然很陌生,所以请原谅我,如果这一切都没有意义,仍在学习语言。
答案 0 :(得分:0)
有许多显示和处理菜单的方法。
这是一种表驱动方法:
struct Menu_Item
{
const char * menu_text;
void (*processing_function)(); // Pointer to processing function
};
void Process_Hello()
{
std::cout << "Hello\n";
}
static const Menu_Entry menu_1[] =
{
{"Print Hello", Process_Hello},
};
const size_t menu_1_item_count =
sizeof(menu_1) / sizeof(menu_1[0]);
void Menu_Processor(Menu_Entry const * const p_menu,
size_t item_count)
{
for (unsigned int i = 0; i < item_count; ++i)
{
std::cout << (i + 1) << p_menu[i].menu_text << "\n";
}
unsigned int selection;
std::cin >> selection;
// Process the selection:
(p_menu[selection - 1])();
}
此方法很不错,因为您可以在不更改代码的情况下在表中插入或删除条目。它可以改进,但是这个展示了表驱动菜单系统的概念。