📜  竞争编程初学者的一些有用C++技巧(1)

📅  最后修改于: 2023-12-03 15:27:22.714000             🧑  作者: Mango

竞争编程初学者的一些有用C++技巧

这里是一些可以帮助竞争编程初学者快速提高 C++ 程序设计能力的一些技巧。

STL 模板库的使用

STL(标准模板库)是 C++ 一个非常有用的应用程序库,它包括许多用于容器、算法和迭代器的模板类和函数。通过使用 STL,可以更快地编写代码,并提高代码质量。

下面是一些用于各种 STL 容器(例如 vector,map,set,等)中的常用函数。

Vector

1. 在 vector 的尾部添加元素

使用 push_back 函数来在 vector 的尾部追加元素。

vector<int> v;
v.push_back(1);
v.push_back(2);
v.push_back(3);

2. 访问 vector 中的元素

使用数组下标的形式来访问 vector 中的元素。

vector<int> v = {1, 2, 3};
cout << v[0] << ' ' << v[1] << ' ' << v[2] << endl;

3. 获取 vector 中的元素数量

使用 size 函数来获取 vector 中的元素数量。

vector<int> v = {1, 2, 3};
cout << v.size() << endl; // Output: 3
Set

1. 将元素插入 set

使用 insert 函数将元素插入 set。

set<int> s;
s.insert(1);
s.insert(2);
s.insert(3);

2. 访问 set 中的元素

使用迭代器来访问 set 中的元素。

set<int> s = {1, 2, 3};
for (auto x : s) {
    cout << x << ' ';
}
cout << endl;
Map

1. 将键值对插入 map

使用 insert 函数将键值对插入 map。

map<int, int> m;
m.insert(make_pair(1, 10));
m.insert(make_pair(2, 20));
m.insert(make_pair(3, 30));

2. 访问 map 中的键值对

使用迭代器来访问 map 中的键值对。

map<int, int> m = {{1, 10}, {2, 20}, {3, 30}};
for (auto x : m) {
    cout << x.first << ' ' << x.second << endl;
}
输入输出的处理

在竞争编程中,输入输出是非常重要的一部分。下面是一些处理输入输出的技巧。

读入字符串

使用 getline 函数来读入一行字符串。此函数将一行字符串读入一个 string 对象中。

string str;
getline(cin, str);
读入多个数据

使用输入操作符 >> 来读入多个数据,输入数据时用空格、制表或换行符来分隔多个数据。

int a, b, c;
cin >> a >> b >> c;
格式化输出

使用 printf 函数类似的语法来格式化输出。例如,要输出两位小数的浮点数,可以使用以下代码。

double x = 3.14159265;
printf("%.2lf\n", x);
字符串的处理

在许多竞争编程问题中,字符串处理是一个常见的任务。下面是一些用于字符串处理的函数。

获取字符串长度

使用 length 函数来获取字符串长度。

string str = "hello";
cout << str.length() << endl; // Output: 5
截取字符串

使用 substr 函数来截取字符串。

string str = "hello";
cout << str.substr(1, 3) << endl; // Output: ell
查找子串

使用 find 函数来查找字符串中的子串。

string str = "hello";
int pos = str.find("ell");
cout << pos << endl; // Output: 1
数学函数

在一些竞争编程问题中,需要使用一些标准的数学函数。下面是一些常用的数学函数。

取整函数

使用 ceil 函数来将一个浮点型向上取整。

double x = 3.14;
cout << ceil(x) << endl;

使用 floor 函数来将一个浮点型向下取整。

double x = 3.14;
cout << floor(x) << endl;

使用 round 函数来将一个浮点型四舍五入到最近的整数。

double x = 3.5;
cout << round(x) << endl;
指数函数

使用 pow 函数来计算一个数的幂次方。

double x = 2;
double y = pow(x, 3);
cout << y << endl;
阶乘函数

使用 tgamma 函数来计算一个数的阶乘。

int n = 5;
double x = tgamma(n + 1);
cout << x << endl; // Output: 120.0
结论

使用这些技巧,初学者可以更加快速轻松地提高 C++ 竞争编程的能力。