2 u010710512 u010710512 于 2016.03.28 16:11 提问

求解这段代码的问题啊,错误信息截图

#include "stdafx.h"
#include
#include
using namespace std;

template< typename Container >
void Reverse(const Container& cn)
{
for (auto iter = cn.begin(); iter != cn.begin()+cn.size()/2; iter++)
{
auto temp=*iter;
iter=(cn.begin() + (cn.end() - 1 - iter));
*(cn.begin() + (cn.end() - 1 - iter))=temp;
}
}

int _tmain(int argc, _TCHAR* argv[])
{
vector vec;
int i;
while (cin>>i)
{
vec.push_back(i);
}
Reverse(vec);
for (auto iter = vec.begin(); iter !=vec.end(); iter++)
{
cout<<*iter<<endl;
}
system("pause");
return 0;
}
图片说明

1个回答

caozhy
caozhy   Ds   Rxr 2016.03.28 16:18

auto说明这个程序是C++ 11/14/17的
这个程序的作用是输入一些数字,然后逆序输出,方法是交换头尾两个元素,第二个和倒数第二个,以此类推。

u010710512
u010710512 回复caozhy: 我把const 删了 可以输出,可是加上const应该怎么写啊?
一年多之前 回复
u010710512
u010710512 回复caozhy: 具体应该怎么修改啊,大哥
一年多之前 回复
u010710512
u010710512 改正这样,提示不能给常量赋值,
一年多之前 回复
u010710512
u010710512 template< typename Container > void Reverse(const Container& cn) { for (auto i=0; i<cn.size()/2; i++) { auto temp=cn[i]; cn[i]=cn[cn.size()-1-i]; cn[cn.size()-1-i]=temp; } }
一年多之前 回复
u010710512
u010710512 这个题是反转容器中的元素,让写一个模板类,容器可能为vector list deque
一年多之前 回复
caozhy
caozhy 回复金贝贝1111: 但是你修改迭代器指针,这是不行的。
一年多之前 回复
u010710512
u010710512 回复caozhy: 那个for循环不就是在遍历容器吗?
一年多之前 回复
caozhy
caozhy 回复金贝贝1111: 你的思路根本错了,迭代器是只读的,不能通过迭代器反过来修改集合,你必须遍历vector,然后push_front
一年多之前 回复
u010710512
u010710512 这个程序是我写的,但是编译的时候出现错误,我不知道怎么修改啊?
一年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!