ためすう
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