○vectorの削除
■判定して削除
#include <stdio.h>
#include <vector>
#include <algorithm>
#include <functional>
struct cell{
int no;
char str[64];
};
bool less3(const cell& o)
{
return o.no < 3;
}
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 = 4;strcpy(a.str,"4です");
data.push_back(a);
a.no = 5;strcpy(a.str,"5です");
data.push_back(a);
std::vector<cell>::iterator new_end =std::remove_if(&data[1],&data[5],less3);//選択範囲をless3にてremove
data.erase(new_end, data.end());//いらない部分を消す
{for(int i=0;i<data.size();i++) printf("%s\n",data[i].str);}
return 0;
}
処理結果
1です
3です
4です
5です
■選択範囲の削除
#include <stdio.h>
#include <vector>
#include <algorithm>
#include <functional>
struct cell{
int no;
char str[64];
};
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 = 4;strcpy(a.str,"4です");
data.push_back(a);
a.no = 5;strcpy(a.str,"5です");
data.push_back(a);
data.erase(&data[2],&data[3]);//選択範囲を消す
{for(int i=0;i<data.size();i++) printf("%s\n",data[i].str);}
return 0;
}
処理結果
1です
2です
4です
5です
■すべての要素を削除
#include <stdio.h>
#include <vector>
#include <algorithm>
#include <functional>
struct cell{
int no;
char str[64];
};
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 = 4;strcpy(a.str,"4です");
data.push_back(a);
a.no = 5;strcpy(a.str,"5です");
data.push_back(a);
data.clear();//すべての要素を削除
{for(int i=0;i<data.size();i++) printf("%s\n",data[i].str);}
return 0;
}
処理結果
▲トップページ
>
Windows と C++