C++如何使一个编号列表和我的向量中的事物数量一样大

C++如何使一个编号列表和我的向量中的事物数量一样大,c++,vector,menu,C++,Vector,Menu,我想为我的向量内容制作一个编号列表,该列表将根据向量中的内容数量缩小或增加,因为用户可以随意添加或删除向量中的内容 在这个项目中,用户可以从菜单中选择1来编辑向量。增加一本书,2。显示向量中所有书籍的列表,以及3。删除一本书。下面的功能是选项3,删除一本书。正如您所看到的,我已经将“y”设置为用户选择的被擦除的内容,现在我所需要的是一种方法,可以在一个编号列表中为用户列出我的vector bookCollection的书籍内容 int delBook(vector<string> *

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

在这个项目中,用户可以从菜单中选择1来编辑向量。增加一本书,2。显示向量中所有书籍的列表,以及3。删除一本书。下面的功能是选项3,删除一本书。正如您所看到的,我已经将“y”设置为用户选择的被擦除的内容,现在我所需要的是一种方法,可以在一个编号列表中为用户列出我的vector 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时。删除显示以下内容的书籍:

第一册 第二册 第三册

输入要删除的图书编号:


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

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

以下是一种表驱动的方法:

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

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

只是古玩:int delBookvector*bookCollection为什么要将bookCollection作为指针传递?你说的菜单是什么意思?没有专门用于制作菜单的C++特性,所以你需要指定菜单要做什么?我是一个学生,初学者,所以原谅我的知识缺乏。但是当我在参数中引用bookCollection时,向量bookCollection的其余部分要求使用指针类型。我指的是菜单,更多的是编号列表。因此,当用户从主菜单中选择DeleteBook时,它会给出向量中所有书籍的编号列表。我想要那些与数字相关的数字,所以用户输入与他们想要的书相关的数字。请原谅我,我只上了计算机科学的第二学期。我只是想知道能不能做到。谢谢!我现在的语法知识有点进步,但我今天要把它弄糟,学习一些新的东西!我感谢您的帮助: