设计函数,实现删除向量中重复元素的功能。要求:尽可能避免数据的大量移动
2014-07-12 17:05
447 查看
源代码
#include <vector>
#include <iostream>
using namespace std;
int main()
{
void ass(vector<int> a, int n);
int n,i;
cout<<"向量元素个数:"<<endl;
cin>>n;
vector<int> a(n,0);
for(i=0;i<a.size();i++){
cin>>a[i];
}
ass(a,n);
return 0;
}
void ass(vector<int> a, int n)
{
void mov(vector<int> a, int n);
for (int i=0; i<n-1; i++) {
if (a[i]==-1){
continue;
}
for (int j=i+1; j<n; j++) {
if (a[j]==a[i]){
a[j]=-1;
}
}
}
mov(a,n);
}
void mov(vector<int> a, int n)
{
int i,t=0;
for (i=0; i<n; i++) {
if (a[i]==-1){
++t;
}else{
a[i-t]=a[i];
}
}
for(i=0;i<n-t;i++){
cout<<a[i]<<" ";
}
cout<<endl;
}
#include <vector>
#include <iostream>
using namespace std;
int main()
{
void ass(vector<int> a, int n);
int n,i;
cout<<"向量元素个数:"<<endl;
cin>>n;
vector<int> a(n,0);
for(i=0;i<a.size();i++){
cin>>a[i];
}
ass(a,n);
return 0;
}
void ass(vector<int> a, int n)
{
void mov(vector<int> a, int n);
for (int i=0; i<n-1; i++) {
if (a[i]==-1){
continue;
}
for (int j=i+1; j<n; j++) {
if (a[j]==a[i]){
a[j]=-1;
}
}
}
mov(a,n);
}
void mov(vector<int> a, int n)
{
int i,t=0;
for (i=0; i<n; i++) {
if (a[i]==-1){
++t;
}else{
a[i-t]=a[i];
}
}
for(i=0;i<n-t;i++){
cout<<a[i]<<" ";
}
cout<<endl;
}
相关文章推荐
- UIday1002:UITableView 2 用UITableView实现通讯录cell简单的数据移动、删除、添加功能
- 实现在两个JList中元素移动and实现数据更改后排序
- 实现datagridview中数据的添加,更改,删除功能
- 【C++ STL应用与实现】56: 使用std::unique删除重复元素
- ORACLE删除重复记录(大量重复数据)
- oracle删除大量重复数据
- 手工实现GridView排序、删除、编辑、新增数据功能
- Asp.net+Extjs实现对GridPanel分页、行内编辑、增加、删除、弹出新窗体增加、数据验证、编辑指定列、数据格式转换等功能
- 删除重复数据只保存一条--ms sql及oracle实现方法
- GridView控件与CheckBox结合,实现全选功能,同时实现删除选中的多行数据 .
- oracle 快速删除大批量数据方法(全部删除,条件删除,删除大量重复记录)
- javascript的数组元素,为Array增加两个函数,实现删除功能
- SQL删除数据(分段实现大量数据的删除操作)
- CommVault重复数据删除功能强大
- GridView控件与CheckBox结合,实现全选功能,同时实现删除选中的多行数据
- JQuery 简便实现页面元素数据验证功能
- CommVault重复数据删除功能强大
- CommVault重复数据删除功能强大
- C#语言实现创建、删除和移动文件夹及其文件夹列表功能
- jsp页面某项数据太长用特殊符号代替和全选并删除功能的实现