在本节中,我们将了解 C++ 中命名空间和类的区别。命名空间和类是两个不同的概念。类是数据类型。类基本上是结构的扩展版本。类可以包含数据成员和函数作为成员,但命名空间可以通过将它们组合成一个来包含变量和函数。命名空间不能创建为对象。此概念用作附加信息,以区分类似的函数、类、变量等。具有相同名称的变量、函数可以放置在不同的命名空间中。现在让我们指出命名空间和类的一些重要区别。命名空间用于... 阅读更多
在这里,我们将了解 C 语言中的动态内存分配。C 编程语言提供了几个用于内存分配和管理的函数。这些函数可以在头文件中找到。以下是一些用于内存分配的函数。函数描述void *calloc(int num, int size);此函数分配一个包含 num 个元素的数组,每个元素的大小(以字节为单位)为 size。void free(void *address);此函数释放由 address 指定的内存块。void *malloc(int num);此函数分配一个包含 num 个字节的数组,并将其保留为未初始化状态。void *realloc(void *address, int newsize);此函数重新分配内存,将其扩展到 newsize。动态分配内存在编程时,如果... 阅读更多
我们将开发一个 C++ 程序来实现二维凸包的礼品包装算法。礼品包装算法是一种用于计算给定点集的凸包的算法。算法开始 函数 convexHull() 用于查找 n 个点的集合的凸包: 必须至少有三个点。 初始化结果。 找到最左边的点。 从最左边的点开始,逆时针移动 直到再次到达起点。 打印结果。结束示例代码 实时演示#include using namespace std; #define INF 10000 struct P { int x; int y; ... 阅读更多
这是一个 C++ 程序,用于使用上下基元测试两条线是否相交。它可以用来测试一条线是否与线段相交。当且仅当线段的一个端点位于线的左侧,另一个端点位于线的右侧时,它才会相交。算法开始 为了生成第一条线的方程,在每次编译时使用 rand 生成 x 和 y 系数的随机数。 为了生成第二条线的方程,在... 阅读更多
这是一个 C++ 程序,用于使用 Slicker 算法查找多边形的面积,该算法避免三角剖分以查找多边形的面积。它假设通常的数学约定,即正 y 指向上方。在正 y 指向下的计算机系统中,最简单的方法是使用“正 y 向下”坐标逆时针列出顶点。然后,两个效果抵消以产生正面积。函数和伪代码算法开始 函数 Area() 用于计算以多边形 p 为参数的多边形的面积。 对于 i = 0 到 p.n-1 初始化 j = ... 阅读更多
这是一个 C++ 程序,用于应用上下检验法查找点相对于线的的位置。对于平面上的任何点 t (xt, yt),其相对于连接 m 和 n 的线 L 的位置是通过计算标量 s −Y = A xt + B yt + C 如果 Y< 0,则 t 位于 L 的顺时针半平面;如果 Y>0,则 t 位于逆时针半平面;如果 Y= 0,则 t 位于 L 上。算法开始 获取输入的点。 为了生成线的方程,生成... 阅读更多
当我们使用模板编写程序在编译时进行计算时,这称为模板元编程。示例代码#include using namespace std; templatestruct power { enum { value = 4*power::value }; }; templatestruct power { enum { value = 1 }; }; int main() { cout