複数の自然数(ダブりあり)からなる入力を一意な集合で整理したい。。。
例えばこんな感じ。。
{1,2,3,4,1,2} -> {1,2,3,4}
最初こんなことしてしまった(笑)
int main(void) {
int input[] = { 1, 3, 4, 3, 2, 7, 5, 8, 8, 10, 2, 4, 1 };
VI myVec;
int pre = 0;
forf(i, SIZE(input)) {
bool in = false;
foreach(itr, myVec) {
if (*itr == input[i]) {
in = true;
break;
}
}
if (!in)
myVec.pb(input[i]);
}
foreach(itr, myVec)
cout << *itr << endl;
}
ヘタレ過ぎる・・・・
STLでsetという便利なものがあることを発見。
これを使うと一意な要素しか入力しないらしい。
setを使って書くとこんな感じ。。
int main(void) {
int input[] = {1,3,4,3,2,7,5,8,8,10,2,4,1};
set<int> mySet;
forf(i, SIZE(input))
mySet.insert(input[i]);
foreach(itr, mySet)
cout << *itr << endl;
}
若干、C++に見えない気がしますが、C++です(笑)
便利なマクロ使ってます。
このset意外と使う場面は多そうだ。
0 件のコメント:
コメントを投稿