很久之前学过忘了 为了打比赛重新复习 每打一次就更一次 含日语内容
B - 1.01.出力とコメント
1.cout << 2525 << endl; 可以没有endl 结尾. endl作用是换行
2.整除问题 int情况下1/2无法变成0.5 所以1/2应该放在后面 100 * (100 + 1) / 2
3.for循环理解图
4.string char
文字列変数.size()
で文字列の長さを取得できる文字列変数.at(i)
でi文字目にアクセスできる文字列変数.at(i)
のi
を添え字(下标)という
5.
- cout << "Hello"s.size() << endl; // 5(sを末尾につける)
- cout << "Hello".size() << endl; // できない
"Hello"s.size()i不加s报错
6.
- getline(cin, s); // 変数sで入力を一行受け取る
- getline(cin, t); // 変数tで入力を一行受け取る
7.
vector<int> vec(N);
for (int i = 0; i < N; i++) {cin >> vec.at(i);
}
vector<int> vec(3);
はvector<int> vec = {0, 0, 0}
とほとんど同じ意味です。
vector<int>
の場合は全ての要素が0
vector<string> vec(3)
と書いた場合、空の文字列の配列{"", "", ""}
で初期化されます。
vector<int> vec(3, 5);
と書いた場合、配列変数vec
は{5, 5, 5}
配列は文字列のように+=
で要素を追加することはできません。
代わりに配列変数.push_back
を使えば、配列の末尾に要素を追加することができます。
#include <bits/stdc++.h>
using namespace std;int main() {vector<int> vec = { 1, 2, 3 };vec.push_back(10); // 末尾に10を追加// vecの全要素を出力for (int i = 0; i < vec.size(); i++) {cout << vec.at(i) << endl;}
}
今まで配列の要素を指定するときは配列変数.at(添字)
と書いてきましたが、配列変数[添字]
でも同じことができます。
ただし、この書き方は範囲外の添字を指定してしまったときにエラーメッセージを表示してくれず、何が原因でプログラムが正しく動いていないのかがわかりにくいので、配列変数.at(添字)
の書き方を使うようにしましょう。
次のプログラムは、配列{ 1, 2, 3 }
の最初の要素に2つの方法でアクセスしています。
使用[] 之前代码里面加上
- #define _GLIBCXX_DEBUG才会显示out of range报错
8.stl函数
O - 1.14.STLの関数
vector排序
常用: min max swap reverse sort
- sort(vec.begin(), vec.end()); // {1, 2, 2, 5}
- reverse(vec.begin(), vec.end()); // {5, 2, 2, 1}
才能从大到小排序?
或者std::sort(vec.begin(), vec.end(), std::greater<int>());