Open2
C++配列操作関連の知見
vectorによる配列とCの配列のソートについて
C配列の +8
とかのところ、慣れないと(仕組みがわかってないと)「配列と数値、(型が違うのに)足し算しちゃうん...?」ってなってしまう。
(いったん慣れてしまうと早いと思うけど、最初覚えた言語がJavaとかだと戸惑うやつ)
#include <bits/stdc++.h>
using namespace std;
/*
template<typename T>
std::ostream & operator<<(std::ostream & Str, vector<T> const & vec) { ...略 }
std::ostream & operator<<(std::ostream & Str, const int* arr) { ...略 }
*/
int main() {
int c_arr[8] = {1, 11, 111, 1111, 11111, 111111, 1111111, 11111111};
sort(c_arr , c_arr + 8, greater<>());
cout << c_arr << endl;
vector<int> vec_arr = {1, 11, 111, 1111, 11111, 111111, 1111111, 11111111};
sort(vec_arr.begin(), vec_arr.end(), greater<>());
cout << vec_arr << endl;
}
lower_bound とか
事あるごとに忘れるので書いておく
int main() {
vector<int> vec_arr = {1, 11, 111, 1111, 11111, 111111, 1111111, 11111111};
cout << "10000より大きい最初の値: "<< *lower_bound(vec_arr.begin(), vec_arr.end(), 10000) << endl;
cout << "10000より大きい最初の値の位置: " << distance(vec_arr.begin(), lower_bound(vec_arr.begin(), vec_arr.end(), 10000)) << endl;
}