//C++代码如下
#include <iostream>
#include <algorithm>
#include <vector>
#include <map>
using namespace std;
int main()
{
int *ptr=NULL;
int n;//存储输入的整数个数
vector<int> v;
map<int,int> m;//map存储索引,备查
cout<<"请输入整数个数"<<endl;
cin>>n;
ptr=new int [n];
cout<<"获取数组元素"<<endl;
for(int i=0;i!=n;++i)
{
cin>>ptr[i];
v.push_back(ptr[i]);
}
sort(v.begin(),v.end());//排序
v.erase(unique(v.begin(),v.end()),v.end());//将排序后的元素唯一化,即v中只存在互异的元素。
for(int i=1;i<=(int)v.size();++i)
m[v[i-1]]=i;//计算索引下标
for(int i=0;i!=n;++i)
{
cout<<m[ptr[i]]<<",";//到map中查找,输出结果
}
cout<<endl;
delete [] ptr;
ptr=0;
return 0;
}
追问d:\练习学生端(vcpp)\dddddd\ddddd.cpp(27) : error C2374: 'i' : redefinition; multiple initialization
d:\练习学生端(vcpp)\dddddd\ddddd.cpp(19) : see declaration of 'i'
追答难道你不是学计算机的,一个这么简单的编译错误你也不会改正?
你用的是什么编译器?C语言不行,但是标准C++的循环变量是可以这个样子定义的。
追问刚开始学C++,不懂么。。。VC6.0
追答你把循环控制变量i只出现一次就可以了。
其余的i你可以改成其他的变量嘛,例如j,k。
按理说,编译器是不应该报错的。因为我的
那个代码符合C++标准。
本回答被提问者采纳