C++ pair 知识点总结

Search for a command to run...

No comments yet. Be the first to comment.
一、有序对和笛卡尔积 1、有序对(序偶):由两个元素 x 和 y 按照确定顺序排列组成的二元组,记作⟨x, y⟩ 2、笛卡尔积:以 A 中元素为第一元、B 中元素为第二元,构造所有有序对⟨x,y⟩; 由全部这类有序对构成的集合,称为 A 与 B 的笛卡尔积,记作 AXB 例题: 已知 A={a,b}, B={0,1,2},求笛卡尔积 A × B、B × A A × B(前元取自 A,后元取自 B

1、集合的概念 N元子集:含有n个元素的子集叫做N元子集. 例题:已知集合 A={1,2,3},按元素个数对 A 的所有子集分类 0元子集:∅ 1元子集:{1}, {2}, {3} 2 元子集:{1,2}, {1,3}, {2,3} 3 元子集:{1,2,3} 幂集:设 A 为集合,由 A 的全部子集构成的集合称为 A 的幂集,记作P(A). 例题:A={1,2,3},求A的幂集 答案:P

一、基本元件 元件 符号 说明 例子 个体词 a, b, c... 代表具体对象(常元) a:小明 个体变元 x, y, z... 代表任意对象 x 表示论域中任一元素 谓词 P(x), Q(x,y)... 表示性质或关系 P(x):x是学生; L(x,y):x喜欢y 量词 ∀, ∃ 修饰个体范围 ∀x(所有x); ∃x(存在x) 连接词 ¬, ∧, ∨, →, ↔ 命

本质是"逻辑推导游戏",给定几个前提,用固定规则一步步推出结论。套路固定,背下规则就能拿分。 一、核心推理规则公式: 假言推理(MP)A→B, A ⇒ B肯定前件→肯定后件拒取式(MT)A→B, ¬B ⇒ ¬A否定后件→否定前件假言三段论(HS)A→B, B→C ⇒ A→C蕴含传递析取三段论(DS)A∨B, ¬A ⇒ B否定一边得另一边附加律A ⇒ A∨B或上一个随便什么化简律A∧B ⇒ A (或

定义:S是一个联结词集合,若任一个命题公式都可以由s中的联结词表示出来命题公式与之等价,则称S是一个联结词完备集。 也就是说一个连接词集合,能表达出所有真值函数,称为完备集 以下是完备集: S1={¬,∧,∨} —— 否定、合取、析取 S2={¬,∧,∨,→} —— 否定、合取、析取、蕴涵 S3={¬,∧,∨,→,↔} —— 否定、合取、析取、蕴涵、等价 S4={¬,∧} —— 否定、

pair 是 C++ STL 中的模板类,用于将两个值组合成一个单元
头文件:#include <utility>(使用 map 时会自动包含)
常用来存储键值对、坐标、两个相关变量等
// 1. 默认构造
pair<int, string> p1;
// 2. 直接赋值
pair<int, string> p2(1, "hello");
// 3. 拷贝构造
pair<int, string> p3(p2);
// 4. make_pair 自动推导类型
auto p4 = make_pair(2, "world");
first:第一个元素
second:第二个元素
p2.first = 10;
p2.second = "hi";
cout << p2.first << " " << p2.second << endl;
p1 = p2;
按 first 优先比较,first 相等再比较 second 支持:==、!=、<、<=、>、>=
swap(p1, p2);
// 或
p1.swap(p2);
配合 vector 存多组二元数据
vector<pair<int, int>> vec;
vec.emplace_back(1, 2);
vec.push_back({3, 4});
遍历
for (auto &p : vec) {
cout << p.first << " " << p.second << endl;
}
作为 map 的元素类型
map<int, string> mp;
mp.insert({1, "a"});
// mp 中每个元素都是 pair<const int, string>
// 结构化绑定(C++17)
auto [x, y] = p2;