关于DEQUE容器的初始化
#include <iostream>
#include <list>
#include <string>
#include <deque>
using namespace std;
int main()
{string a[]={"1","2","3","4","5","4","6","7","7"};
std::deque<string> de(a,a+9);
for(deque<string>::iterator it=de.begin();it!=de.end();++it)
if(*it=="4")
{it=de.erase(it);
--it;
}
for(it=de.begin();it!=de.end();++it)
cout<<*it<<endl;
return 0;
}
这段代码编译无法通过,,,
Documents and Settings\啊啊啊\桌面\c&c++实例\9.27.cpp(8) : error C2664: '__thiscall std::deque<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::allocator<class std::basic_string<char,struct std::c
har_traits<char>,class std::allocator<char> > > >::std::deque<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::allocator<class std::basic_string<char,struct std::char_traits<char>,class std::allocato
r<char> > > >(unsigned int,const class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > &,const class std::allocator<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > &)' : can
not convert parameter 1 from 'class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > [9]' to 'unsigned int'
This conversion requires a reinterpret_cast, a C-style cast or function-style cast
[解决办法]
int main()
{
string a[]={"1","2","3","4","5","4","6","7","7"};
deque <string> de;
for(int i=0;i<9;i++)
{
cout<<a[i]<<endl;
de.push_back(a[i]);
}
for(deque <string>::iterator it=de.begin();it!=de.end();++it)
if(*it=="4")
{
it=de.erase(it);
--it;
}
for(it=de.begin();it!=de.end();++it)
cout <<*it <<endl;
return 0;
}