ためすう

to_string を使ってみる (C++)

2019-12-24

やったこと

to_string を使ってみます。

確認環境

$ g++ --version
g++ (Homebrew GCC 9.2.0) 9.2.0
Copyright (C) 2019 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

調査

test.cpp

#include <bits/stdc++.h>
using namespace std;

int main() {
    int d = 123;

    cout << typeid(d).name() << endl;
    cout << to_string(d) << endl;
    cout << typeid(to_string(d)).name() << endl;
}

出力結果

i
123
NSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE

参考

指数構文を使う (C++)

2019-12-22

やったこと

指数構文の e を使って数字を表示してみます。

確認環境

$ g++ --version
g++ (Homebrew GCC 9.2.0) 9.2.0
Copyright (C) 2019 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

調査

test.cpp

#include <bits/stdc++.h>
using namespace std;

int main() {
    cout << 1e3 << endl;
    cout << 0.123e2 << endl;
}

出力結果

1000
12.3

参考

isupper islower を使ってみる (C++)

2019-12-21

やったこと

下記を使って大文字、小文字を判別します。

  • isupper
  • islower

確認環境

$ g++ --version
g++ (Homebrew GCC 9.2.0) 9.2.0
Copyright (C) 2019 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

調査

test.cpp

#include <bits/stdc++.h>
using namespace std;

int main() {

    cout << isupper('e') << endl;
    cout << islower('e') << endl;

    cout << isupper('E') << endl;
    cout << islower('E') << endl;
}

出力結果

0
1
1
0

参考

vector で先頭の要素と最後の要素にアクセスする (C++)

2019-12-20

やったこと

vector で最初と最後の要素にアクセスします。

確認環境

$ g++ --version
g++ (Homebrew GCC 9.2.0) 9.2.0
Copyright (C) 2019 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

調査

test.cpp

#include <bits/stdc++.h>
using namespace std;

int main() {
    vector<int> B = {7, 0, 9};
    cout << B.front() << endl;
    cout << B.back() << endl;
}

出力結果

7
9

参考

copy を使ってみる (C++)

2019-12-19

やったこと

copy を使って、vector をコピーしてみます。

確認環境

$ g++ --version
g++ (Homebrew GCC 9.2.0) 9.2.0
Copyright (C) 2019 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

調査

test.cpp

#include <bits/stdc++.h>
using namespace std;

int main() {
    vector<int> v1 = {3, 10, 2};
    vector<int> v2(v1.size());
    copy(v1.begin(), v1.end(), v2.begin());

    sort(v1.begin(), v1.end());

    for (auto i : v1) {
        cout << i << " ";
    }
    cout << endl;

    for (auto i : v2) {
        cout << i << " ";
    }
    cout << endl;
}

出力結果

2 3 10
3 10 2

参考

max_element, min_element を使ってみる (C++)

2019-12-19

やったこと

配列、vector の最大値、最小値とそれらのインデックスを取得します。

確認環境

$ g++ --version
g++ (Homebrew GCC 9.2.0) 9.2.0
Copyright (C) 2019 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

調査

test.cpp

#include <bits/stdc++.h>
using namespace std;

int main() {
    // 配列
    int A[] = {4, 10, 2};
    cout << "配列" << endl;
    cout << *max_element(A, A + 3) << endl;
    cout << max_element(A, A + 3) - A << endl;
    cout << *min_element(A, A + 3) << endl;
    cout << min_element(A, A + 3) - A << endl;

    cout << endl;

    // vector
    cout << "vector" << endl;
    vector<int> B = {30, 10, 6, 20, 55, 2};

    cout << "最大値" << endl;
    auto max_iter = max_element(B.begin(), B.end());
    cout << *max_iter << endl;
    cout << distance(B.begin(), max_iter) << endl;
    cout << max_iter - B.begin() << endl;

    cout << "最小値" << endl;
    auto min_iter = min_element(B.begin(), B.end());
    cout << *min_iter << endl;
    cout << distance(B.begin(), min_iter) << endl;
    cout << min_iter - B.begin() << endl;
}

出力結果

配列
10
1
2
2

vector
最大値
55
4
4
最小値
2
5
5

参考

map::count を使ってみる (C++)

2019-12-17

やったこと

map::count の動きを確認してみます。

確認環境

$ g++ --version
g++ (Homebrew GCC 9.2.0) 9.2.0
Copyright (C) 2019 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

調査

test.cpp

#include <bits/stdc++.h>
using namespace std;

int main() {
    map<string, int> mp;

    mp["A"]++;
    mp["E"]++;
    mp["A"]++;

    cout << "A の表示" << endl;
    cout << mp["A"] << endl;
    // count は存在チェック
    cout << mp.count("A") << endl;

    // 存在しないキーは 0 となる
    cout << "B の表示" << endl;
    cout << mp["B"] << endl;
    cout << mp.count("B") << endl;
}

出力結果

A の表示
2
1
B の表示
0
1

参考

数字を0埋めで表示する (C++)

2019-12-17

やったこと

数字を表示するとき、0埋めで表示してみます。

確認環境

$ g++ --version
g++ (Homebrew GCC 9.2.0) 9.2.0
Copyright (C) 2019 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

調査

test.cpp

#include <bits/stdc++.h>
using namespace std;

int main() {
    int v = 3;

    printf("%04d\n", v);

    cout << setfill('0') << right << setw(4) << v << endl;
}

出力結果

0003
0003

参考

sort を使ってみる (C++)

2019-12-16

やったこと

sort を使って配列、vector を降順にソートしてみます。

確認環境

$ g++ --version
g++ (Homebrew GCC 9.2.0) 9.2.0
Copyright (C) 2019 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

調査

test.cpp

#include <bits/stdc++.h>
using namespace std;

int main() {
    // 配列
    int a[] = {3, 8, 1};
    sort(a, a + 3, greater<int>());

    for (int i = 0; i < 3; i++) {
        cout << a[i] << endl;
    }

    cout << endl;

    // vector
    vector<int> v = {2, 9, 3};
    sort(v.rbegin(), v.rend());

    for (int i = 0; i < 3; i++) {
        cout << v[i] << endl;
    }
}

出力結果

8
3
1

9
3
2

参考

reverse を使ってみる (C++)

2019-12-16

やったこと

配列を反対順にするため、reverse 使ってみます。

確認環境

$ g++ --version
g++ (Homebrew GCC 9.2.0) 9.2.0
Copyright (C) 2019 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

調査

test.cpp

#include <bits/stdc++.h>
using namespace std;

int main() {
    // 配列
    int a[] = {3, 5, 2};
    reverse(a, a + 3);

    for (int i = 0; i < 3; i++) {
        cout << a[i] << endl;
    }

    cout << endl;

    // vector
    vector<int> v = {2, 10, 8};
    reverse(v.begin(), v.end());

    for (int i = 0; i < 3; i++) {
        cout << v[i] << endl;
    }
}

出力結果

2
5
3

8
10
2

参考