C++如何制作一个只有向量中事物数量那么大的编号列表

C++ How to make a numbered list only as big as the number of things in my vector

本文关键字:列表 编号 向量 何制作 一个 C++      更新时间:2023-10-16

我想为向量的内容制作一个编号列表,该列表将根据向量中的内容数量而缩小或增加,因为用户可以随意添加或删除向量中的属性。

在该项目中,用户可以从菜单中选择以1编辑矢量。添加一本书,2。显示矢量中所有书籍的列表,以及3。删除书本。下面的功能是选项3,删除一本书。正如你所看到的,我已经将"y"设置为被删除的用户选择,我现在所需要的就是在一个编号列表中为用户列出书籍(矢量图书收藏的内容)。

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);
}
}
}

我希望删除选择在控制台中看起来像这样:

  1. "第一册">
  2. "第二册">
  3. "第三册">
  4. "第四册">

    输入要删除的图书编号:"4">

但可以根据添加到向量中的字符串数量进行收缩或增加,因此下次用户选择"3。删除一本书"它显示:

  1. "第一册">
  2. "第二册">
  3. "第三册">

    输入要删除的图书编号:

我对编程还很陌生,所以如果这些都没有意义,请原谅我,我还在学习行话。

显示和处理菜单的方法有很多。

这是一种表驱动的方法:

struct Menu_Item
{
const char * menu_text;
void (*processing_function)(); // Pointer to processing function
};
void Process_Hello()
{
std::cout << "Hellon";
}
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])();
}

这种方法很好,因为您可以在表中插入或删除条目,而无需更改代码。它可以改进,但这一个演示了表驱动菜单系统的概念。