○vectorのユニーク
■ユニーク(重なってる値を取り除く)
#include <stdio.h>
#include <vector>
#include <algorithm>
#include <functional>
struct cell{
int no;
char str[64];
};
bool is_eqals(const cell& left, const cell& right)
{
return (left.no == right.no) ;
}
bool operator<(const cell& left, const cell& right)
{
return left.no < right.no ;
}
int main(){
std::vector<cell> data;
cell a;
a.no = 1;strcpy(a.str,"1です");
data.push_back(a);
a.no = 2;strcpy(a.str,"2です");
data.push_back(a);
a.no = 3;strcpy(a.str,"3です");
data.push_back(a);
a.no = 1;strcpy(a.str,"1です");
data.push_back(a);
a.no = 2;strcpy(a.str,"2です");
data.push_back(a);
a.no = 3;strcpy(a.str,"3です");
data.push_back(a);
a.no = 4;strcpy(a.str,"4です");
data.push_back(a);
a.no = 5;strcpy(a.str,"5です");
data.push_back(a);
std::sort(data.begin(),data.end());//昇順ソート ソートが事前に必要
std::vector<cell>::iterator new_end = std::unique(data.begin(),data.end(),is_eqals);
data.erase(new_end, data.end());//いらない部分を消す
{for(int i=0;i<data.size();i++) printf("%s\n",data[i].str);}
return 0;
}
処理結果
1です
2です
3です
4です
5です
■ユニーク コピー(重なってる値を取り除きコピー(元の配列は変化なし))
#include <stdio.h>
#include <vector>
#include <algorithm>
#include <functional>
struct cell{
int no;
char str[64];
};
bool is_eqals(const cell& left, const cell& right)
{
return (left.no == right.no) ;
}
bool operator<(const cell& left, const cell& right)
{
return left.no < right.no ;
}
int main(){
std::vector<cell> data;
cell a;
a.no = 1;strcpy(a.str,"1です");
data.push_back(a);
a.no = 2;strcpy(a.str,"2です");
data.push_back(a);
a.no = 3;strcpy(a.str,"3です");
data.push_back(a);
a.no = 1;strcpy(a.str,"1です");
data.push_back(a);
a.no = 2;strcpy(a.str,"2です");
data.push_back(a);
a.no = 3;strcpy(a.str,"3です");
data.push_back(a);
a.no = 4;strcpy(a.str,"4です");
data.push_back(a);
a.no = 5;strcpy(a.str,"5です");
data.push_back(a);
std::sort(data.begin(),data.end());//昇順ソート ソートが事前に必要
std::vector<cell> resolt;
std::unique_copy(data.begin(),data.end(),std::back_inserter(resolt),is_eqals);
{for(int i=0;i<resolt.size();i++) printf("%s\n",resolt[i].str);}
return 0;
}
処理結果
1です
2です
3です
4です
5です
▲トップページ
>
Windows と C++