#include<list>
#include<string>
//#include”d_search.h”
using namespace std;
//查询函数
template <typename T>
typename list<T>::iterator seqSearch(typename list<T>::iterator first,
typename list<T>::iterator last, const T& target)
{
// start at location first
list<T>::iterator iter = first;
// compare list elements with item until either
// we arrive at last or locate item
while(iter != last && !(*iter == target))
iter++;
// iter either points at item or is last
return iter;
}
int main()
{
//前list表中元素的前三项倒序存储,后三项也倒序存储,输出结果应为
//Dave Glenn Joe Heather Bryce Bret
string str[]={“Joe”,”Glenn”,”Dave”,”Bret”,”Bryce”,”Heather”};
int strSize=sizeof(str)/sizeof(string);
list<string> strList(str,str+strSize);
list<string>::iterator it,it1,it2,it3;
it1=seqSearch<string>(strList.begin(),strList.end(),”Deve”);//运行此函数出错
//换成int型,编译能通过,输出结果也正确
/*int arr[]={3,5,78,32,98,36};
int asize=sizeof(arr)/sizeof(int);
list<int> strList(arr,arr+asize);
list<int>::iterator it,it1,it2,it3;
it1=seqSearch<int>(strList.begin(),strList.end(),78);//定位78的位置*/
it1++;
for(it=strList.begin();it!=it1;)
{
strList.push_front(*it);
strList.erase(it++);
}
it2=strList.end();
it2–;
it–; //还利用上次循环it最后的值,往前移一位
for(it3=it2;it3!=it;)
{
strList.push_back(*it3);
strList.erase(it3–);
}
for(it=strList.begin();it!=strList.end();it++)
cout<<*it<<” “;
cout<<endl;
return 0;
}
用string型编译出现:c:\program files\microsoft visual studio 10.0\vc\include\xmemory(157): error C2535: “const char (*std::allocator<_Ty>::address(const char (&)[5]) const)[5]”: 已经定义或声明成员函数 的错误,而换成int型就一切正常。
编译器还没完全写好呗。
有些应该实现的功能还没实现。具体的,去查 VS2010 的文档。
VS2013 VS2015 做的都不只是 bug fix ,对 C++ 的支持也是逐渐加强的。