複数の自然数(ダブりあり)からなる入力を一意な集合で整理したい。。。
例えばこんな感じ。。
{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 件のコメント:
コメントを投稿