C++list有关问题
C++list问题
小弟新手 写了一段code 作用是用户input txt文件 系统分析txt文件里面出现多少单词 重复多少次 下面是code:
#include <iostream>
#include <algorithm>
#include <list>
#include <vector>
#include <ctype.h>
#include <fstream>
#include <string>
#include <cstdlib>
using namespace std;
class wordList
{public:
int occuerence;
string word;
wordList(int occuerence1,string str):occuerence(occuerence1),word(str){};
~wordList();
void addOccuerence()
{occuerence += 1;}
};
void printList(list<wordList> &myList);
void openFile(list<wordList> &myList);
void printList(list<wordList> &myList)
{
list<wordList>::const_iterator itr;
for (itr = myList.begin(); itr != myList.end(); itr++ )
{
cout << ' ' << itr->word << "occurence " << itr->occuerence;
}
cout << '\n';
}
void openFile(list<wordList> &myList)
{
string filein;
ifstream fin;
char word[255];
char ch;
cout << "Please enter the file name: ";
cin >> filein;
fin.open(filein.c_str());
if (!fin){
cerr << "Can't open "<<filein
<< " \n";
fin.close();
exit(1);}
while(!fin.eof())
{
fin.get(ch);
switch(ch)
{
case ' ':
{list<wordList>::iterator itr;
for (itr = myList.begin(); itr != myList.end(); itr++ )
{if (word == itr->word)
itr->addOccuerence();
else
{string newword(word);
这里出错myList.push_back(new const wordList(1,newword));}}}
default:
{for(int i = 0;i < 255;i++)
{if(!word[i])
word[i] = ch;
break;}}}
}
fin.close();
}
int main ()
{
list<wordList> myList;
openFile(myList);
printList(myList);
return 0;
}
但是G++了之后出现这个错误:
no matching function for call to std::list(wordList,std::allocator(wordList))::push_back(const wordList*)
求解
------解决方案--------------------
VC6.0编译运行都行啊;
小弟新手 写了一段code 作用是用户input txt文件 系统分析txt文件里面出现多少单词 重复多少次 下面是code:
#include <iostream>
#include <algorithm>
#include <list>
#include <vector>
#include <ctype.h>
#include <fstream>
#include <string>
#include <cstdlib>
using namespace std;
class wordList
{public:
int occuerence;
string word;
wordList(int occuerence1,string str):occuerence(occuerence1),word(str){};
~wordList();
void addOccuerence()
{occuerence += 1;}
};
void printList(list<wordList> &myList);
void openFile(list<wordList> &myList);
void printList(list<wordList> &myList)
{
list<wordList>::const_iterator itr;
for (itr = myList.begin(); itr != myList.end(); itr++ )
{
cout << ' ' << itr->word << "occurence " << itr->occuerence;
}
cout << '\n';
}
void openFile(list<wordList> &myList)
{
string filein;
ifstream fin;
char word[255];
char ch;
cout << "Please enter the file name: ";
cin >> filein;
fin.open(filein.c_str());
if (!fin){
cerr << "Can't open "<<filein
<< " \n";
fin.close();
exit(1);}
while(!fin.eof())
{
fin.get(ch);
switch(ch)
{
case ' ':
{list<wordList>::iterator itr;
for (itr = myList.begin(); itr != myList.end(); itr++ )
{if (word == itr->word)
itr->addOccuerence();
else
{string newword(word);
这里出错myList.push_back(new const wordList(1,newword));}}}
default:
{for(int i = 0;i < 255;i++)
{if(!word[i])
word[i] = ch;
break;}}}
}
fin.close();
}
int main ()
{
list<wordList> myList;
openFile(myList);
printList(myList);
return 0;
}
但是G++了之后出现这个错误:
no matching function for call to std::list(wordList,std::allocator(wordList))::push_back(const wordList*)
求解
------解决方案--------------------
VC6.0编译运行都行啊;
- C/C++ code
~wordList(){};//加个大括号
------解决方案--------------------
myList.push_back(*new const wordList(1,newword));}}}