0

成功创建了用于存储条目的字符串向量。一个 while 循环请求 ToDo 项,一个 SHOW 键向用户显示当前存储在字符串向量中的所有项。为了更轻松地访问项目,我有一个 int 仅在项目前显示“运行”数字。

用户添加了一些项目后,他可以输入 DEL 是什么让他进入删除模式:(这里我喜欢输入 2 what will delete Stop Smoking 并重新排列数组以填补空白)

在此处输入图像描述

现在我想获取用户输入的数字,减 1 以匹配向量数组索引号并删除条目,但是最好的方法是什么?

这就是我如何将项目添加到字符串向量中:

int taskNumber = 1;
cout<<"New task: ";
getline (cin,newTaskEntry);
taskVector.push_back(newTaskEntry);

cout<<"TOTAL TASKS IN YOUR INBOX: "<<taskVector.size()<<endl;

这就是我向用户显示所有条目的方式:

for (vector<string>::iterator i = taskVector.begin(); i != taskVector.end(); ++i) 
            {
                cout<<taskNumber<<"  ";
                cout<<*i<<endl;
                taskNumber = taskNumber +1; 
            }
4

2 回答 2

2

使用vector的erase()成员函数。它需要一个迭代器,但由于向量支持随机访问迭代器,这不是问题:

taskVector.erase(taskVector.begin() + n - 1);  // where n is the number user enters

还要确保n不大于向量的大小。

于 2012-07-03T10:16:25.480 回答
1

只做:

cin >> number;
if(number > 0 && number < taskVector.size())
{
    vector<string>::iterator it(taskVector.begin() + number - 1);
    taskVector.erase(it);
}
else
    cout << "Error. Out of bounds\n";
于 2012-07-03T10:17:52.430 回答