所以这是我的程序。这很不言自明。有一个菜单有 4 个选项。每个选项都提供两个不同子菜单的版本。我正在处理列表和向量,但现在列表给了我错误。我对迭代器做错了吗?我很确定这就是我所有的错误。
#include <iostream>
#include <vector>
#include <algorithm>
#include <list>
#include <vector>
using namespace std;
template <class T>
void lst(T inglethorp, int a)
{
list<T> mylist;
int sel = 10;
T ins;
int place;
list<T>::iterator iter; //is this wrong?
//error: expected ';' before 'iter'
//dependent-name 'std::list::iterator' is parsed as a non-type, but instantiation yields a type
switch(a)
{
case 1:
cout << "What would you like to load to the front?" << endl;
cin >> ins;
mylist.push_front(ins);
cout << endl << endl;
break;
case 2:
cout << "What would you like to load to the back?" << endl;
cin >> ins;
mylist.push_back(ins);
cout << endl << endl;
break;
case 3:
cout << "Where would you like to insert the value?" << endl;
cin >> place;
iter = mylist.begin(); //'iter' was not declared in this scope
for(int i=0; i < place; i++)
iter++;
cout << "What would you like to lod at this point?" << endl;
cin >> ins;
mylist.insert(iter, ins);
cout << endl << endl;
break;
case 4:
cout << "What would you like to search for?" << endl;
cin >> ins;
iter = find(mylist.begin(), mylist.end(), ins);
if(iter==mylist.end())
cout << ins << " was not founf." << endl << endl;
else
cout << ins << " is in the list" << endl << endl;
break;
case 5:
cout << "What would you like to remove?" << endl;
cin >> ins;
mylist.remove(ins);
cout << endl << endl;
break;
case 6:
for(iter = mylist.begin(); iter != mylist.end(); iter++)
cout << *iter << " " << endl << endl;
break;
case 0:
break;
default:
cout << "Enter a valid number between 0 and 6" << endl << endl;
break;
}
}
void listsub()
{
cout << endl << endl << "Linked List Sub-Menu" << endl;
cout << "+++++++++++++++++++++++++++++++++++++++++++++++++" << endl;
cout << "1. Insert a value at the front of the list" << endl;
cout << "2. Insert a value at the back of the list" << endl;
cout << "3. Insert a value at a given position in the list" << endl;
cout << "4. Search the list for a value" << endl;
cout << "5. Delete all instances of a value" << endl;
cout << "6. Print the list contents" << endl << endl;
cout << "0. Return to main homework menu" << endl;
cout << "+++++++++++++++++++++++++++++++++++++++++++++++++" << endl;
}
int main()
{
int sel = 10;
int subsel = 10;
int a = 1;
double b = 1.1;
int sel2 = 19;
while(sel != 0)
{
sel = 10;
subsel = 10;
cout << endl << endl << "Welcome to the CS222 Homework 7 Menu!" << endl;
cout << "=================================================" << endl;
cout << "1. Test the vector STL with integers" << endl; //not done yet
cout << "2. Test the vector STL with doubles" << endl; //not done yet
cout << "3. Test the list STL with integers" << endl;
cout << "4. Test the list STL with doubles" << endl << endl;
cout << "0. Exit" << endl;
cout << "=================================================" << endl << endl;
cin >> sel;
switch(sel)
{
case 1:
break;
case 2:
break;
case 3:
while(sel2 != 0)
{
listsub();
cin >> sel2;
lst(a, sel2);
}
sel2 = 12;
break;
case 4:
while(sel2 != 0)
{
listsub();
cin >> sel2;
lst(b, sel2);
}
sel2 = 12;
break;
case 0:
break;
default:
cout << "Select 0-4" << endl;
break;
}
}
return 0;
}