ためすう

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

参考

連続した文字列を使う (C++)

2019-12-15

やったこと

連続した文字列を使いたい時、どのように指定するのかやってみます。

今回は、ある1文字が連続した場合です。

確認環境

$ 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() {
    string s1(3, 'A');
    string s2(2, 'X');

    cout << s1 << endl;
    cout << s2 << endl;
}

出力結果

AAA
XX

整数かどうかを確かめる (C++)

2019-12-15

やったこと

値が整数かどうかをみます。

確認環境

$ 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() {
    double d1 = pow(3, 0.5);
    double d2 = 2.0;

    cout << (d1 == floor(d1)) << endl;
    cout << (d2 == floor(d2)) << endl;
}

出力結果

0
1

参考

ラムダ式を使ってみる (C++)

2019-12-14

やったこと

小数点の桁数を10桁で指定してみます。

確認環境

$ 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() {
    auto add = [&](int a, int b) {
        return a + b;
    };

    cout << add(2, 3) << endl;
}

出力結果

5

参考

小数点の桁数を指定する (C++)

2019-12-14

やったこと

小数点の桁数を10桁で指定してみます。

確認環境

$ 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() {
    double ans = pow(2, 0.5);

    printf("%.10f\n", ans);

    cout << fixed << setprecision(10);
    cout << ans << endl;
}

出力結果

1.4142135624
1.4142135624

char を string に変換する (C++)

2019-12-10

やったこと

char 型のデータを 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() {
    string s1 = "xyz";

    cout << typeid(s1[1]).name() << endl;

    string s2 = {s1[1]};
    cout << typeid(s2).name() << endl;
    cout << s2 << endl;
}

出力結果

c
NSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE
y

tolower, toupper を使ってみる (C++)

2019-12-10

やったこと

tolower, toupper を使ってみます。

確認環境

$ 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() {
    string s1 = "abcdef";
    string s2 = "ABCDEF";
    s1[4] = toupper(s1[4]);
    s2[2] = tolower(s2[1]);

    cout << s1 << endl;
    cout << s2 << endl;
}

出力結果

abcdEf
ABbDEF

参考