C++ 中的对集
集合是一种关联容器,其中每个元素都必须是唯一的,因为元素的值标识了它。元素的值一旦添加到集合中就不能修改,尽管可以删除和添加该元素的修改值。
Pair 是在
- 第一个元素被称为“第一”,第二个元素被称为“第二”,并且顺序是固定的(第一,第二)。
- Pair 用于将类型可能不同的两个值组合在一起。 Pair 提供了一种将两个异构对象存储为一个单元的方法。
- 可以分配、复制和比较对。在 map 或 hash_map 中分配的对象数组默认为“pair”类型,其中所有“first”元素都是与其“second”值对象关联的唯一键。
- 要访问元素,我们使用变量名后跟点运算符,然后是关键字 first 或 second。
- 集合中的对按排序顺序存储,按键排序,即对的第一个值。
配对集有助于执行以下操作:
- 添加一对,但不允许重复。
- 删除对。
- 获取不同对的计数。
- 检查一对是否存在于集合中。
创建对集合的语法是:
set>set_name;
创建对组
示例:使数组中存在的所有偶数成对。
Input: 2 3 1 6 5 8 10 9
Output: (2, 6) (2, 8) (2, 10) (6, 8) (6, 10) (8, 10)
Input: 4 4 6 4
Output: (4, 4) (4, 6)
Input: 24 24 24 24
Output: (24, 24)
Input: 7, 100, 53, 81
Output: No valid pair
下面的程序说明了上述问题的解决方案:
在此示例中,基于范围的 for 循环与 const 参考一起使用,以提高速度和安全性,迭代容器中的所有元素。变量“x”的类型为“pairs”。要访问对的元素,请使用变量名后跟点运算符,然后是关键字“第一”或“第二”,这些是类对的公共成员。
程序:
// C++ program to create Set of Pairs
#include
using namespace std;
typedef pair pairs;
// Constant reference
// reference for speed const to avoid changing values
void display(const set& s)
{
bool found = false;
// range-based for loop
for (auto const &x : s) {
found = true;
cout << "(" << x.first << ", "
<< x.second << ")"
<< " ";
}
if (not found) {
cout << "No valid pair\n";
}
}
int main()
{
vector v{ 2, 3, 1, 6, 8, 8, 10, 2 };
set s;
for (int i = 0; i < v.size() - 1; i++) {
for (int j = i + 1; j < v.size(); j++) {
// check for even number
if (v[i] % 2 == 0 && v[j] % 2 == 0) {
// makes pairs of even numbers
pairs x = make_pair(v[i], v[j]);
// inserts into the set
s.insert(x);
}
}
}
// to display the pairs
display(s);
// to clear the set
s.clear();
}
输出:
(2, 2) (2, 6) (2, 8) (2, 10) (6, 2) (6, 6) (6, 8) (6, 10) (8, 2) (8, 8) (8, 10) (10, 2) (10, 10)