关于STL::LIST的erase函数一个小问题
使用STL中的LIST来解决约瑟夫问题,好像其中的erase函数出了问题,哪位朋友帮忙给指点一下。我的编译环境是VC2005.#include<list>#include...
使用STL中的LIST来解决约瑟夫问题,好像其中的erase函数出了问题,哪位朋友帮忙给指点一下。
我的编译环境是VC2005.
#include<list>
#include<string>
#include<iostream>
using namespace std;
int main()
{
cout << "the original list is:" << endl;
list<string> name1; //存放原始序列
list<string> name2; //存放目标序列
name1.push_back("001");
name1.push_back("002");
name1.push_back("003");
name1.push_back("004");
name1.push_back("005");
list<string>::iterator current = name1.begin();
while( !name1.empty() )
{
//开始报数,如果报到表尾,则转到表头
for ( int i = 1; i < 2; i++)
if ( current == name1.end() )
current = name1.begin();
else
current++;
//将出列者放入到name2中,并将其从name1中删除
name2.push_back( *current );
current = name1.erase( current );
}
//输出结果序列
for ( current = name2.begin(); current != name2.end(); current++)
cout << *current << endl;
} 展开
我的编译环境是VC2005.
#include<list>
#include<string>
#include<iostream>
using namespace std;
int main()
{
cout << "the original list is:" << endl;
list<string> name1; //存放原始序列
list<string> name2; //存放目标序列
name1.push_back("001");
name1.push_back("002");
name1.push_back("003");
name1.push_back("004");
name1.push_back("005");
list<string>::iterator current = name1.begin();
while( !name1.empty() )
{
//开始报数,如果报到表尾,则转到表头
for ( int i = 1; i < 2; i++)
if ( current == name1.end() )
current = name1.begin();
else
current++;
//将出列者放入到name2中,并将其从name1中删除
name2.push_back( *current );
current = name1.erase( current );
}
//输出结果序列
for ( current = name2.begin(); current != name2.end(); current++)
cout << *current << endl;
} 展开
2个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询