C++ 多态

C++ 多态

多态按字面的意思就是多种形态。当类之间存在层次结构,并且类之间是通过继承关联时,就会用到多态。

C++ 多态意味着调用成员函数时,会根据调用函数的对象的类型来执行不同的函数。

下面的实例中,基类 Shape 被派生为两个类,如下所示:

实例



#include <iostream> 
using namespace std;
 
class Shape {
   protected:
      int width, height;
   public:
      Shape( int a=0, int b=0)
      {
         width = a;
         height = b;
      }
      int area()
      {
         cout << "Parent class area :" <<endl;
         return 0;
      }
};
class Rectangle: public Shape{
   public:
      Rectangle( int a=0, int b=0):Shape(a, b) { }
      int area ()
      { 
         cout << "Rectangle class area :" <<endl;
         return (width * height); 
      }
};
class Triangle: public Shape{
   public:
      Triangle( int a=0, int b=0):Shape(a, b) { }
      int area ()
      { 
         cout << "Triangle class area :" <<endl;
         return (width * height / 2); 
      }
};
// 程序的主函数
int main( )
{
   Shape *shape;
   Rectangle rec(10,7);
   Triangle  tri(10,5);
 
   // 存储矩形的地址
   shape = &rec;
   // 调用矩形的求面积函数 area
   shape->area();
 
   // 存储三角形的地址
   shape = &tri;
   // 调用三角形的求面积函数 area
   shape->area();
   
   return 0;
}

当上面的代码被编译和执行时,它会产生下列结果:

Parent class area
Parent class area

导致错误输出的原因是,调用函数 area() 被编译器设置为基类中的版本,这就是所谓的静态多态,或静态链接 – 函数调用在程序执行前就准备好了。有时候这也被称为早绑定,因为 area() 函数在程序编译期间就已经设置好了。

但现在,让我们对程序稍作修改,在 Shape 类中,area() 的声明前放置关键字 virtual,如下所示:

class Shape {
   protected:
      int width, height;
   public:
      Shape( int a=0, int b=0)
      {
         width = a;
         height = b;
      }
      virtual int area()
      {
         cout << "Parent class area :" <<endl;
         return 0;
      }
};

修改后,当编译和执行前面的实例代码时,它会产生以下结果:

Rectangle class area
Triangle class area

此时,编译器看的是指针的内容,而不是它的类型。因此,由于 tri 和 rec 类的对象的地址存储在 *shape 中,所以会调用各自的 area() 函数。



正如您所看到的,每个子类都有一个函数 area() 的独立实现。这就是多态的一般使用方式。有了多态,您可以有多个不同的类,都带有同一个名称但具有不同实现的函数,函数的参数甚至可以是相同的。

虚函数

虚函数 是在基类中使用关键字 virtual 声明的函数。在派生类中重新定义基类中定义的虚函数时,会告诉编译器不要静态链接到该函数。

我们想要的是在程序中任意点可以根据所调用的对象类型来选择调用的函数,这种操作被称为动态链接,或后期绑定

纯虚函数

您可能想要在基类中定义虚函数,以便在派生类中重新定义该函数更好地适用于对象,但是您在基类中又不能对虚函数给出有意义的实现,这个时候就会用到纯虚函数。



我们可以把基类中的虚函数 area() 改写如下:

class Shape {
   protected:
      int width, height;
   public:
      Shape( int a=0, int b=0)
      {
         width = a;
         height = b;
      }
      // pure virtual function
      virtual int area() = 0;
};

= 0 告诉编译器,函数没有主体,上面的虚函数是纯虚函数


C++ 教程
C++ 教程C++ Hello WorldC++ 变量C++ 数据类型C++ 运算符C++ if语句C++ switch-case语句C++ for循环C++ while循环C++ do-while循环C++ continue语句C++ break语句C++ goto语句C++ 函数C++ 函数中的默认参数C++ 递归C++ 数组C++ 多维数组C++ 将数组传递给函数C++ 字符串C++ 指针C++ this指针C++ OOP 概念C++ 构造函数C++ 析构函数C++ 结构体C++ 结构体和函数C++ 枚举C++ 继承C++ 多态C++ 函数重载C++ 函数覆盖C++ 虚函数C++ 封装C++ 抽象C++ 抽象类C++ 函数传递和返回对象C++ 友元类和友元函数C++ 智能指针C++中的using 和 Typedef对比同时执行C或C++中的if和else语句在C和C++中如何在64位机器上用GCC编译32位程序如何创建和使用unique_ptr实例螺旋形式的层次顺序遍历scanf()跟在fgets()或gets()或scanf()时的问题在C++中实现B*树什么是C++中的抽象类C++语言中 在向量添加元素C++中的函数重载C++中裸露的函数调用什么是C++中的操作符重载用C++编写简单的赛车游戏代码用C++编写的SJF CPU调度程序C++ 虚拟函数和运行时多态性在C++中添加两个数组C++中的调用约定C++ 默认参数和虚拟函数C++中的哈希集C++ 计算一棵二叉树有多少个孩子如何创建和使用CComPtr和CComQIPtr实例C++中的多线程与实例C++中的命名规则C++中的私有继承C/C++中的Socket编程C++中的静态对象C++ 什么是运行时类型信息C++ 如何与Node.js之间交流JSON数据C++ 如何实现一个循环队列C++ 使用队列反转堆栈在C++ STL中的deque assign()函数C++ STL中的deque cbegin()C++标准模板库(STL)中的双端队列(Deque)C++ STL中的deque crbeginC++ STL中的 deque crendC++ STL中的deque emplaceC++ STL中 deque::emplace_front() 和 deque::emplace_back()的使用Deque::empty() 和 deque::size()在C++ STL中的应用C++ STL中的Deque::front() 和 deque::back()deque get_allocator在C++ STL中的使用C++ STL中的deque insert() 函数C++ STL中的deque max_size()函数C++中的带有实例的deque of PairsC++中使用元组的Deque示例deque rbegin()函数在C++ STL中的使用C++ STL中的deque rend()函数C++ STL中的deque resize()函数C++ STL中的deque shrink_to_fit函数C++ STL 中Deque 与 Vector 对比C++ STL 中的deque::at() 和 deque::swap()C++ STL deque::begin() 和deque::endC++ STL中的deque :: clear()和deque :: erase()在 C++ STL 中 deque::operator= 和 deque::operator[]deque::pop_front() 和 deque::pop_back() 在 C++ STL 中的应用在C ++ STL中deque::push_back()的使用在C++ STL中 deque::push_front()C++中的前向迭代器C ++中的前向列表和对列表的实例在C++中使用示例的Forward List和Tuple ListC++中的前向列表和无序映射列表C++ STL中的forward_list assign()函数C++ STL 中的forward_list cbegin()C++ STL中的forward_list emplace_after()和emplace_front()C++ STL中的forward_list insert_after()函数在C++ STL中forward_list max_size()的使用方法及示例C++ STL中的forward_list merge()C++ STL中的forward_list resize()函数C++ STL中的forward_list::before_begin()C++ STL中的forward_list::begin()和forward_list::end()在 C++ STL 中的 forward_list::cbefore_begin() 函数forward_list::cend()在C++ STL中的用法及示例C++ STL中forward_list::clear() 和 forward_list::erase_after()C++STL中的forward_list::emplace_front()在C++ STL中使用forward_list::front()和forward_list::empty()C++ STL中的forward_list::max_size()C++ STL中的forward_list::operator=C++ STL中的forward_list::push_front()和forward_list::pop_front()C++ STL中的forward_list::remove()和forward_list::remove_if()C++ STL中的forward_list::reverse()C++ STL中的forward_list::splice_after()C++ STL中的forward_list::swap()C++ STL中的forward_list::swap()C++ STL中forward_list::unique()函数C++ 用户自定义数据类型的多集合C++标准模板库(STL)中的MultimapC++ STL中的multimap empty()函数C++ STL 中的 multimap equal_range()在C++ STL中使用multimap find()在C++ STL中的multimap get_allocator()函数在C++ STL中使用multimap insert()C++ STL中的multimap key_compC++ STL中的multimap key_comp()multimap lower_bound() 函数在 C++ STL 中的应用C++ STL中的multimap maxsize()C++中的双关键字映射表及示例C++中的元组多重映射及示例在C++ STL中的多映射操作符=在C++ STL中的multimap rbeginC++ STL中的multimap rend函数在C++ STL中multimap size()函数C++ STL中的multimap swap()函数C++ STL 中的 multimap upper_bound() 函数C++ STL中的multimap value_comp()函数在C++ STL中Multimap与Map的比较及示例在 C++ STL 中multimap::begin() 和 multimap::end() 的使用在C++的STL中使用multimap::cbegin()和multimap::cend()C++ STL中的multimap::count()C++ STL中的multimap::crbegin()和multimap::crend()C++ STL中的multimap::emplace()C++ STL中的multimap::emplace_hint()C++ STL中的 multimap::erase()在C++ STL中的multimap::operator=C++ STL中的multimap::swap()C++优先级队列中的多次比较?C++ STL中的multiset begin()和end()函数C++ STL中的multiset cbegin()和cend()函数C++ STL中的multiset的clear()函数C++ STL 中的 multiset count() 函数在 C++ STL 中multiset crbegin() 和 crend() 函数multiset emplace_hint() 函数在 C++ STL 中的应用C++ STL中的multiset empty()函数C++ STL中multiset equal_range()函数multiset erase()在C++ STL中C++ STL中的multiset find()函数在C++ STL中multiset get_allocator()函数的应用C++标准模板库(STL)中的MultisetC++ STL中的multiset insert()函数C++ STL中的multiset key_comp()函数C++ STL中的multiset lower_bound()及示例在C++ STL中 multiset max_size()在C++ STL中使用示例解释multiset::max_size()C++中的Multiset of Pairs及示例在C++中使用示例的元组的MultisetC++中的向量Multiset及示例C++ STL 中的 multiset rbegin() 和 rend() 函数在C++ STL中使用示例的multiset size()C++ STL中的multiset::upper_bound()及其示例C ++ STL中的multiset value_comp()方法C++ STL中的multiset::emplace()C++ STL中的multiset::operator=C++ STL中的multiset::swap()C++标准模板库中的优先队列在C++中使用优先队列列表的示例C++映射的优先队列及示例C++中的优先级队列按第一和第二元素排序C++中集合的优先队列与示例C++中的元组优先队列及其示例C++ STL中的priority_queue emplace()C++ STL中的priority_queue value_typeC++ STL中的priority_queue::empty() 和priority_queue::size()C++ STL中的 priority_queue::push() 和 priority_queue::pop()C++ STL中的priority_queue::swap()在C ++ STL中的priority_queue :: top()在C++中使用std::is_floating_point模板C++中std::is_object模板C++中的std::is_union()模板std::is_assignable模板在C++中的应用及示例C++中的std::is_base_of模板及其示例C++中的std::is_compound模板C++中的std::is_constructible模板及示例C++中的std::is_convertible模板及示例C++中的std::is_copy_assignable及例子在C ++中使用示例的std :: is_copy_constructibleC++的 std::is_default_constructible 模板及示例在C++中使用std::is_destructible进行检查std::is_enum C++中的模板C++ std::is_function 模板及示例使用示例中的C++中的std::is_heap()C++中的std::is_integral模板C++中的std::is_literal_type及示例C++模板std::is_member_function_pointer及示例在C ++中 std::is_member_object_pointer模板的应用C++中的std::is_member_pointer及示例C++ std::is_move_assignable及示例std::is_move_constructible在C++中的应用与示例在C++中使用示例的std :: is_nothrow_assignableC++中的std::is_nothrow_constructible及示例C++中的std::is_nothrow_copy_assignable及示例C++ 中的 std::is_nothrow_copy_constructible 示例在C++中std::is_nothrow_default_constructible及示例C++中的std::is_nothrow_move_assignableC++ 中 std::is_nothrow_move_constructible 的使用和示例C++中的std::is_partitionedC++ STL中的std::is_permutationC++中带有示例的std::is_same模板C++中的std::is_sortedC++中的std::is_sorted_until在C++中使用std::is_trivially_assignable进行示例在C++中std::is_trivially_constructible的例子C++中带有示例的std::is_trivially_copyable模板在C ++中 std :: is_trivially_copy_assignable类及示例C/C++ 中的 std::is_trivially_copy_constructible在C++中使用std::is_trivially_default_constructible模版类及示例C++中的std::is_trivially_destructible和示例使用示例为C ++的std :: is_trivially_move_assignable使用示例中的C++ std::is_trivially_move_constructibleC++中的unordered_map at()函数C++ 中的 unordered_map begin() 函数C++ STL中的unordered_map bucket()在C++ STL中的unordered_map cbegin函数C++ STL中的unordered_map.cend函数在C++ STL中的unordered_map中使用clear()函数C++中的unordered_map count()在C++ STL中的unordered_map emplace()在C++ STL中使用unordered_map emplace_hint()函数C++ STL中的unordered_map end()函数在C++中使用unordered_map equal_rangeC++ STL中的unordered_map erase在C++的STL中使用unordered_map的find函数在C++ STL中的unordered_map get_allocator在C++ STL中的unordered_map hash_function()函数在C++ STL中的unordered_map在C++ STL中使用unordered_map insert函数C++ STL中unordered_map的key_eq()函数C++ STL 中 unordered_map 的 load_factorC++ STL中的unordered_map max_bucket_countC++ STL中的unordered_map max_load_factorC++ STL中的unordered_map max_size在C++ STL中使用unordered_map等号运算符C++ STL 中的 unordered_map 操作符[]C++ STL 中的 unordered_map rehashC++ STL中的unordered_map reserve()C++ STL中的unordered_map size()在C++ STL中使用unordered_map swap在C ++ STL中的unordered_multimap begin()和end()函数C++ STL 中 unordered_multimap bucket() 函数在C++ STL中的unordered_multimap.bucket_count()函数C++ STL 中的 unordered_multimap bucket_size() 函数C++ STL中的unordered_multimap cbegin()函数C++ STL 中 unordered_multimap cend() 函数在C++ STL中的unordered_multimap clear()函数C++ STL中的unordered_multimap count()函数在 C++ STL 中的unordered_multimap emplace() 函数C++ STL中的unordered_multimap emplace_hint()函数C++ STL中的unordered_multimap empty()函数C++ STL中的unordered_multimap equal_range() 函数C++ STL中unordered_multimap的erase函数unordered_multimap在C++ STL中的find()函数在C++ STL中使用unordered_multimap的get_allocator函数C++ STL中的unordered_multimap hash_function()C++ STL中的unordered_multimap insert()函数C++ STL中的unordered_multimap key_eq() 函数C++ STL中unordered_multimap load_factor()函数C++ STL中的unordered_multimap max_bucket_count()函数C++ STL 中 unordered_multimap max_load_factor() 函数C++ STL 中的 unordered_multimap max_size() 函数C++ STL 中的 unordered_multimap operator=C++ 中的 unordered_multimap operator=unordered_multimap在C++ STL中的rehash()函数C++ STL中的unordered_multimap reserve()函数C++ STL中unordered_multimap size()函数C++ STL中unordered_multimap swap()函数在C++ STL中使用unordered_multiset begin()函数C++ STL中的unordered_multiset bucket()函数C++ STL的unordered_multiset bucket_count()函数C++ STL 中 unordered_multiset::bucket_size() 函数unordered_multiset cbegin()函数的C++ STLC++ STL中的unordered_multiset cend()函数C++ STL中unordered_multiset clear()函数C++ STL 中无序多重集的 count() 函数在C++ STL中unordered_multiset::emplace()函数unordered_multiset emplace_hint() 函数在C++ STL中C++ STL中的unordered_multiset empty() 函数C++ STL中的unordered_multiset end() 函数C++ STL中unordered_multiset equal_range()函数unordered_multiset erase()函数在C++ STL中的使用C++STL 中的 unordered_multiset find() 函数在C++ STL中使用unordered_multiset get_allocator在C++ STL中使用unordered_multiset::hash_function()函数在C++ STL中的unordered_multiset insert()函数C++ STL中unordered_multiset的key_eq()函数C++中的无序pair集合及示例在C++中使用元组的无序集合及示例在C++中的无序向量集及例子在C++ STL中的unordered_multiset load_factor()函数C++ STL 中的 unordered_multiset max_bucket_count() 函数C++ STL中的unordered_multiset max_load_factor()函数C++ STL中unordered_multiset max_sizeC++ STL中的unordered_multiset运算符=在C++ STL中使用unordered_multiset::rehash()函数在C++ STL中的unordered_multiset reserve()方法C++ STL中的unordered_multiset size()函数C++ STL中的unordered_multiset swap()函数C++ STL中的unordered_multiset swap()C++ STL中的unordered_set begin()函数C++ STL中unordered_set bucket()函数在 C++ STL 中的 unordered_set bucket_count 函数在C++ STL中使用unordered_set bucket_size()C++ STL中的unordered_set cbegin() 函数在C++ STL中的unordered_set cend()函数C++ STL中的unordered_set count()函数在C++ STL中的unordered_set emplace()函数在C++ STL中的unordered_set emplace_hint()函数C++ STL中的unordered_set empty()函数C++ STL中的unordered_set end()C++ STL中unordered_set equal_range函数C ++ STL 中的 unordered_set erase () 函数C++ STL中unordered_set find()函数在C++ STL中使用unordered_set hash_function()C++标准模板库中的无序集C++ STL的unordered_set insert()函数C++ STL中的unordered_set key_eq()函数C++ STL中unordered_set的load_factor()函数在C++ STL中的unordered_set max_bucket_count()函数在C++ STL中的unordered_set max_load_factor()C++ STL中的unordered_set max_size()C++ STL中的unordered_set operator!=运算符C++ STL 中 unordered_set == 运算符C++ STL中的unordered_set operator=C++ STL中的无序集合运算符C++ STL中的unordered_set rehash()函数C++STL中的unordered_set reserve()函数C++ STL中unordered_set size()函数C++ STL中unordered_set swap()函数C++ STL中的unordered_set swap()C++ STL中unordered_set的clear()函数
C++ 基础教程
C++ 简介C++ 环境设置C++ 基本语法C++ 注释C++ 数据类型C++ 变量类型C++ 变量作用域C++ 常量C++ 修饰符类型C++ 存储类C++ 运算符C++ 循环C++ 判断C++ 函数C++ 数字C++ 数组C++ 字符串C++ 指针C++ 引用C++ 日期 & 时间C++ 基本的输入输出C++ 数据结构C++ 类 & 对象C++ 继承C++ 重载运算符和重载函数C++ 多态C++ 数据抽象C++ 数据封装C++ 接口(抽象类)C++ 文件和流C++ 异常处理C++ 动态内存C++ 命名空间C++ 模板C++ 预处理器C++ 信号处理C++ 多线程C++ Web 编程C++ STL 教程C++ 标准库C++ 有用的资源
C++ 问答
C++文本文件和二进制文件的区别c++中deque::assign与deque::empty的区别c++与Java异常处理的比较c++中的结构体vs类C结构体与C++结构体的区别C++函数重载与函数重写区别C++中的new 和 operator new 区别C++中的std::string::append 和 std::string::push_back() 和 +=操作符对比C++中关系操作符(==)和std::string::compare()的区别C++中vector::erase和std::remove的区别C++中的std::next 和 std::advance 区别C++中set, multiset, unordered_set, unordered_multiset的区别C++中map与unordered_map的对比C++中名称空间和类之间的区别C++中strncmp()与strcmp的区别C++ STL中的set和mapC++ STL中set与unordered_set对比std::swap和std::vector::swap的区别std::quick_exit和std::abort的区别C++ 中 cout 和 puts() 的区别及示例C ++中前向列表和列表的区别C++中set, multiset, unordered_set, unordered_multiset的区别C++ 中的 std next 与 std advance 的区别C C++中strncmp()和strcmp()的区别C++ map和unordered_map的区别C C++中float和double的区别C ++中的序列与关联容器C++ STL中 set 和 map 的区别代码在 C 和 C++ 中都有效,但输出结果不同Ruby 和 C++的区别C++中关系运算符(==)和std string compare()的区别C ++ STL中双端队列与向量的区别C++中public和private的区别std quick_exit() 和 std abort() 的区别std swap()和std vector swap()的区别C++中构造函数和析构函数的区别C++中的方法和函数以及示例C++ 中的 new、malloc() 和 free() 、deletePerl和C C++的对比区别C++中抽象和封装的区别C++中基类和派生类的区别C++中continue和break语句的区别Dart和C++的区别Go和C++的区别C++中内联和宏的区别C C++中迭代器和指针的区别命名空间和类的区别C++中单继承和多继承的区别静态库和共享库的区别向量的 std remove 和 vector erase 的区别C++中虚函数和纯虚函数的区别C++中Const和Regular迭代器的对比及其示例Rust和Dart的区别,哪个更有可能取代C++C++中 cout 和std cout的区别C++和Go的区别C++ STL中Multiset和Multimap的区别C++中虚函数和内联函数的区别Turbo C++和Dev C++的区别PHP和C++的区别C++ std set和std list的区别C++ std set 和std vector 的区别队列和Deque 的区别C++中的浅拷贝和深拷贝的区别Swift和Objective-C的区别在C ++中使用库检查数组中的所有元素是否为偶数C++检查给定图是否使用DFS为双向图C++检查给定约束条件下一个字符串是否可以由另一个字符串形成C++ 检查 X 是否能给队列中的每个人找零C++ 中抽象与封装的区别C++中的基类和派生类的区别C++ 和 PHP 的区别C++ cerr和clog之间的区别C++ 字符串拼接操作符 += 和 + 的区别C++ 常量指针、指向常量的指针和指向常量的常量指针之间的区别C++中构造函数和析构函数的区别C++ 中容器和继承的差异C++中continue和break语句的区别C++中cout和puts()的区别,附带示例C++中cout和std::cout的区别C++文本文件和二进制文件的区别DART与C++的区别C++编写一个程序,使用一个函数检查给定字符串是否是有效密码,根据特定规则(例如,必须至少包含一个大写字母、一个小写字母和一个数字)在C++中deque::assign和deque::at之间的区别deque::assign 和 deque::back 在 C++ 中的区别deque::assign 和 deque::empty 在C++中的区别C++中deque::begin与deque::assign的区别deque::cbegin 与 deque::assign 在C++中的区别C++中 Forward List 和 List 的区别在C++中Friend函数和Virtual函数的区别C/C++中的#include和Java中的import的区别C++ 继承和多态的区别C++中内联函数和宏定义的区别内联函数与普通函数在C++中的区别int (* p)[3]和int* p[3]的区别?C/C++中long int和long long int之间的区别C++和Java中的多维数组的区别C++ STL中Multiset和Multimap中Pair的差异C++ 指针传递和指向指针的地址传递之间的区别C++中预处理器指令和函数模板的区别在C++中Private和Protected的区别(带例子)Python与C++的区别C++中Queue和Deque的区别C++ 中关系运算符(==)和 std::string::compare() 的区别在C++中set,multiset,unordered_set,和unordered_multiset的区别C++单继承与多继承的区别C++ STL中向量大小和容量的区别在C++中静态函数和常量函数的区别静态函数和友元函数在C++中的区别std::numeric_limits的min、max和lowest在C++中的区别std::quick_exit和std::abort之间的差异C++ std::remove和vector::erase用于向量的区别std::set与std::vector在C++ STL中的区别C++中std::set::lower_bound和std::lower_bound的区别C++中std::set::upper_bound和std::upper_bound的区别std::swap和std::vector::swap之间的区别C++ 语法和语义的区别Turbo C++ 和 Dev C++ 的区别C++ 中虚函数与内联函数的差异虚函数与纯虚函数在 C++ 中的区别C++ 命名空间和类的区别C++ STL中不同的复制方法 | std :: copy(),copy_n(),copy_if(),copy_backward()C++ 中不同类型的基于范围的 for 循环迭代器C++ 在switch块内但在case外如何处理语句C++中的Deque内部工作原理是什么C++ 中的向量是如何工作的默认虚拟行为在C++和Java中有什么不同C++ STL中的通用find()函数是如何工作的如何使用C++按索引访问集合中的元素如何在C++类外部访问私有/保护方法C++ 如何在容器类中添加对象的引用如何在C++中避免整数溢出和下溢如何在C++中检查文件或目录的存在C++ 如何使用find()方法在双端队列中检查/查找项如何在C++中清除控制台如何在C++中比较字符如何在C++中将类转换为另一类类型?如何在C++中将Qstring转换为十六进制如何在C++中将单个字符转换为字符串如何将数组中的元素复制到C++向量中如何在C++中创建具有基本功能的自定义String类如何在C++ STL中使用构造函数创建列表如何在C++中创建无序对unordered_map如何在C++中创建元组的unordered_map如何在C++中创建自定义类的unordered_map如何在C++中创建一个用户定义类或结构的unordered_setC++如何从现有的文本文件创建二进制文件如何在Sublime Text中创建代码片段如何在VS Code中创建模板代码如何使用new运算符在C++中动态声明二维数组如何在C++中声明一组pair的比较器如何在C++中定义类外的构造函数C++ 如何使用迭代器从列表中删除一定范围的值C++如何使用迭代器从Set中删除一系列值如何通过传递其值从C ++中删除Set中的元素如何在C++ STL中从List中删除最后一个元素如何从 C++ 的 Map 中删除最后一个元素如何检测C++中析构函数的堆栈展开如何在C++中动态分配一个三维数组C++ 如何使用erase()和reverse_iterator从向量中删除元素如何在C++中从路径中提取文件名和扩展名如何使用C ++中的STL找到两个数组之间的共同元素如何使用STL在C++中查找两个向量之间的公共元素如何在C++向量中找到给定元素的索引如何在C++中不使用sizeof()运算符找到数组的大小如何在C++ STL中查找std :: forward_list的大小如何在C++ Map中查找具有最大值的Entry如何使用C++中的STL找到向量的最大元素?如何使用C++中的STL查找数组的最大元素如何利用C ++中的STL找到向量的最小和最大元素如何使用C++中的STL找到数组的最小值和最大值如何使用STL在C ++中找到向量元素的和如何使用C++ STL查找数组元素的和如何在Dev-C++中修复auto关键字错误如何在C++中扁平化向量或2D向量如何在C++中生成随机值的向量如何在C++中获取对象的唯一标识符如何在C++中获取List中特定位置的元素如何在C++中隐藏控制台窗口启动如何在C++中隐藏和显示控制台窗口如何使用C++ STL中的list实现堆栈如何在C++中实现自己的向量类如何在C++ STL中初始化3D向量如何在C++中使用参数化构造函数初始化对象数组如何在C++中输入逗号分隔的字符串如何在C ++ STL中插入一系列元素如何在C++数组中特定位置插入元素C++如何插入字符串映射的数据如何在C++中迭代STL队列如何在C ++中迭代std :: tuple的元素如何在C++中不使用迭代器遍历Vector如何使用C++ STL合并两个数组?如何使用C++ STL合并两个向量如何在C++ sfml中锁定窗口大小如何使用C++ IOS库操作cout对象如何在C++中测量经过的时间如何在C++中重载==运算符如何使用RapidJson解析C++中的对象数组C++ 如何在不使用循环或递归的情况下打印N次如何在C++中使用QDebug打印字符串和Qstring如何使用RapidJson读取和解析Json文件?如何在C++中读取和打印整数值如何从C++函数返回本地数组如何从C++函数中返回局部变量如何使用C++中的STL反转向量如何使用C++中的STL反转数组如何在不使用命名空间的情况下运行C++程序如何设置VSCode与C、C++和Python用于竞争性编程如何使用C++ STL将Vector降序排序如何使用C++中的STL对数组进行降序排序如何使用C ++中的STL对数组进行排序如何在C++中存储有序集中的重复元素如何在C++中反向遍历一个SetC++ 如何反向遍历 STL map如何在C++ STL中使用Binder和Bind2nd函数对象如何使用FlawFinder-python工具查找C/C++代码中的漏洞如何在竞技编程中将int视为long long int使用如何在C++中高效使用unordered_map如何在C++程序中使用usleep函数如何使用正则表达式验证MICR代码?如何在一个睡眠状态的std::thread中唤醒它C++ 可变长度参数是如何工作的C++中的前向声明是什么混合使用 C++ 的 new 和 free 会发生什么?C++ 什么是动态内存分配?Java 15和C++ 20有哪些新功能何时在C++中创建默认构造函数和复制构造函数?C++中什么时候调用复制构造函数如果在C++中在一个块中创建对象,它会被存储在哪里哪些C++库对于竞技编程有用?C++ Map使用哪种数据结构为什么C ++是竞赛编程最好的选择为什么C++ STL没有提供任何“树”容器?为什么在C++程序中写using namespace std很重要为什么Java语言比C++在竞技编程中运行速度慢?C++为什么覆盖全局new操作符和类特定操作符不会产生歧义?为什么会创造C++语言
C++ 示例
C++程序 - 求商和余数C++程序 - 求三个数字中的最大值C++程序 - char到int的转换在C++中查找Vector中的成员函数C++程序 针对由链表表示的两个数进行加法的-2C++程序 矩阵加法C++程序 给定一个单向链表的交替拆分-1C++程序 将数组左旋d个元素C++程序 数组的平均数计算(迭代和递归)C++程序 二进制转十进制转换C++程序 打印矩阵边界元素C++程序 判断数组是否排序且旋转C++程序 计算二进制矩阵中1和0的集合数C++程序 十进制转二进制C++程序 十进制转十六进制C++程序 实现十进制转八进制C++程序 在给定位置删除链表节点C++程序 在给定约束条件下删除链表中给定节点C++程序 在链表中删除节点C++程序 检测链表中的循环C++ 程序 矩阵行列式C++程序 检查对角线占优矩阵C++程序 双精度转字符串C++程序 数组平衡点的程序C++程序 求解斐波那契数列C++程序 在两个数组中找到k对最小元素之和C++程序 仅允许旋转给定数组,找到Sum( i*arr[i])的最大值C++程序 找到三个链表中和等于给定数字的三元组C++程序 查找两个有序链表的交集C++程序 查找两个链表交点C++程序 寻找链表长度C++程序 寻找给定和的子数组-1C++程序 在链表中找到循环的长度C++程序 查找给定链表的中间元素C++程序 平铺链表C++程序 将多级链表展开C++ 程序 矩阵中偶数和奇数数字的频率C++ 程序 生成长度为 n 的 Lyndon 词C++程序 给定排序和旋转的数组,查找是否存在给定和的一对C++程序 十六进制转十进制C++程序 单位矩阵C++程序 向链表中插入节点C++程序 插入排序C++程序 在已排序数组中查找第K个缺失元素C++程序 矩阵的Kronecker积C++程序 已排序数组中最后一个重复元素C++程序 数组中的领导者C++程序 寻找数组中最少出现的元素C++程序 左旋和右旋字符串C++ 程序 线性搜索C++程序 找到左右旋转相同的一个数字的最长子序列C++程序 用于Markov矩阵C++程序 查找正方形矩阵中的最大值和最小值C++程序 最大循环子数组和C++程序 大小为两个组之间的最大差异C++程序 计算机领域最大平衡和C++程序 寻找最大积子数组C++程序 找出给定数组的所有旋转中i*arr[i]的最大和C++程序 计算数组范围内的平均数C++程序 合并排序C++程序 将所有字符串变成相等的操作的最小操作次数C++程序 计算最小正整数数组两个数的乘积C++程序 最小乘积子集C++程序 计算机领域的最小旋转次数的字符串C++程序 矩阵沿对角线的镜像C++程序 将给定链表的最后元素移动到前面C++程序 计算本地极值个数C++程序 计算最大总和的对数C++程序 计算唯一三元组的XOR为零C++程序 八进制转十进制的转换C++程序 找到一个数的幂乘积等于另一个数C++程序 对给定链表中元素进行成对交换C++ 程序 帕斯卡三角形C++程序 打印链表倒数第N个节点C++程序 不实际颠倒的链表反转C++程序 数组中范围乘积C++程序 查找两个数字的最小公倍数C++程序 在常数时间内查询给定字符串的旋转和第K个字符C ++程序 在旋转数组中查找给定长度的子数组的最大和查询C++程序 单向链表快速排序C++程序 用于范围LCM查询C++程序 区间查询数组元素频率C++程序 从未排序的链表中删除重复项C++程序 用于数组旋转的反转算法C++程序 右旋转数组的翻转算法C++程序 分组反转链表 - 1C++程序 用于在给定大小的组中翻转链表–1C++程序 单链表中交替K节点翻转C++程序 旋转链表C++程序 在二维数组中按行排序C++程序 在排序和旋转的数组中搜索元素C++程序 在链表中搜索元素C++程序 将链表中的偶数节点和奇数节点分离C++程序 选择排序C++程序 矩阵或网格中两个单元格之间的最短距离C++程序 用于确定具有最大和的子数组的大小C++程序 对0、1、2形式的链表进行排序C++程序 对除一个之外的所有数组元素进行排序C++程序 对数组进行排序,除了子数组中的元素C++程序 使用递归计算自然数和C++程序 在不交换数据的情况下交换链表中的节点C ++程序 查找具有不同元素的数组中的第三个最大元素C++程序 实现的双指针技术C++程序 删除链表C++程序 编程写一个获取链表中第N个节点的函数C++程序 打印当前日期和时间C++程序 使用指针访问数组元素C++程序 将两个二进制字符串相加C++程序 添加两个复数C++程序 链表表示的两个数字相加-第1部分C++程序 在现有文件中附加字符串C++程序 将一个文本文件的内容附加到另一个文本文件的C++程序 将给定数字排列成最大的数字C++程序 计算pow(x,n)C++程序 在给定范围内检查和打印Neon数C++程序 检查阿姆斯特朗数C++程序 在已排序的数组中检查多数元素C++程序 检查二进制矩阵的水平和垂直对称性C++程序 检验幂等矩阵C++程序 检查给定矩阵是否稀疏C++程序 检查矩阵是否对称C++程序 检查质数是否可以表示为两个质数的和C++程序 检查单链表是否是回文C++程序 检查一个字符串是否可以通过至多X次循环顺时针移位从另一个字符串形成C++程序 检查字符串是否可以通过旋转另一个字符串2个位置获得C++程序 检查是否可以通过旋转另一个字符串d个位置来获得字符串C++程序 检查所有数组元素是否可以通过旋转数字转换为pronic数C++程序 检查矩阵的所有行是否是彼此的循环旋转C++程序 检查是否可以将数组旋转以使其增加或减少C++程序 检查在旋转数组后是否可以对其进行排序C++程序 检查矩阵是否为下三角形C++程序 检查矩阵是否为上三角形C ++程序 检查两个字符串是否是彼此的旋转体 - 2C++程序 检查两个矩阵是否相同C++程序 检查两个链表是否相同C++程序 检查两个数字是否是彼此的位旋转C++ 程序 检查 Involutory MatrixC++程序 检查闰年C++程序 检查字符串是否仅包含数字C++程序 检查数字是否为回文数C++程序 检查一个数是否为质数C++程序 检查给定数字的所有旋转是否大于或等于给定数字C++程序 检查数字的奇偶性C++程序 链表的顺时针旋转C++程序 比较两个文件的路径C++程序 将华氏温度转换为摄氏温度C++程序 将科学计数法转换为十进制C++程序 将一个文件复制到另一个文件C++程序 将一个数组的内容以相反的顺序复制到另一个数组中C++程序 将一个文件的内容复制到另一个文件中C++程序 计算给定数组中大小为3的逆序数C++程序 统计大于数组左侧所有元素且至少有K个右侧元素小于其的数组元素C++程序 计算生成排序数组所需旋转的次数C++程序 计算给定和的配对数C++程序 统计数组中的正数和负数C++程序 计算可被4整除的旋转次数C++ 程序 计算可被8整除的旋转次数C++程序 计算已排序旋转链表中的旋转数C++程序 计算旋转次数以使给定数组按非递增顺序排序C++程序 计算可被10整除的旋转次数C++程序 统计文件中空格的数量用C++编写的计算小于给定值的三元组计数程序C++程序 创建临时文件C++程序 创建接口C++程序 将数组循环旋转一个位置C++程序 删除链表的交替节点C++程序 删除右侧具有较大值的节点C++程序 绘制直方图C++程序 使用计算机图形学绘制交通灯模拟C++程序 高效计算矩阵对角线之和C++程序 查找具有给定差异的一对元素C++程序 查找三元组,使得两个元素的和等于第三个元素C++程序 查找和为给定值的三元组C++程序 找到一个自然数的所有因子C++程序 查找所有填充为0的矩形C++程序 查找矩形的面积和周长C++ 程序 在两个整数间查找阿姆斯特朗数C++程序 使用按位或,在将给定数组拆分成两半并进行K次循环移位后找到数组和C++程序 在数组中查找最接近的数字C++程序 查找复利C++程序 找到正方体的曲面积C++程序 查找矩形的对角线长度C++程序 找到两个对角线之和的差值C++程序 找出经过若干次旋转后给定索引处的元素C++ 程序 使用递归查找大数的阶乘C++程序 查找一个数的阶乘C++程序 查找两个数字的最大公约数或最小公倍数在C++中查找字符是否为元音还是辅音C++程序:查找是否存在子数组的总和为0C++程序——按原始顺序查找最大的k个元素C++程序-查找三个数字中的最大值C++程序 在数组中查找最大元素C++程序 查找字典顺序最小的字符串旋转|集1C++程序 获取字典序最小的循环序列 - 2C++程序 从重复数组中查找缺失元素C++程序 寻找机器εC++程序 在矩阵中查找每一行的最大元素C++程序 以查找任何二进制字符串的旋转中连续排放的0的数量的最大值C++程序 找到给定数字旋转数字的最大值C++程序 在按行排序的矩阵中找到中位数C++程序 查找给定数字字符串所需的最小循环旋转次数,避免给定字符串集合C++程序 寻找数组右旋K次后第M个元素C++程序 查找矩阵的正常值和痕迹C++程序 不使用乘法(*)和除法(/)操作符来找到幂C++程序 寻找给定区间内的质数C++程序 查找商和余数C++程序 找到旋转 K 个索引的数组的范围和查询C++程序 查找简单利息C++程序 查找斐波那契数列偶数项之和C++程序 查找前N个自然数的和C++程序 在数组中查找给定索引范围内的最大公约数C++程序 查找第 k 大的子数组之和C++程序 在数据流中查找第k大元素C++程序 在数组中查找最小和最大元素C++程序 在K次左旋转后查找数组中第M个元素C++程序 找到二次方程的根C++程序 查找int,float,double和char的大小C++程序 查找最小缺失的数字C++程序 寻找平均值最小的子数组C++程序 寻找给定迭代器类型C++ 程序 查找矩阵的转置C++程序 在矩阵中形成线圈C++程序 生成一个次对角线元素和为完全平方数的矩阵C++程序 生成数字的所有循环C++程序 获取目录中文件列表C++程序 处理检查异常C++程序 处理异常方法C++程序 处理未检查的异常C++实现strpbrk()函数C++程序 实现交易应用C++程序 在原地旋转正方形矩阵的90度 - 1C++程序 交换矩阵的对角线C++ 程序 交换矩阵的第一列和最后一列的元素C++程序 交换矩阵的第一行和最后一行元素C++程序 使文件只读C++程序 最大化通过旋转给定数组来对应相同元素的计数C++程序 使用另一个数组来最大化元素C++程序 将所有行或所有列旋转以使矩阵对角线元素之和最大C++程序 合并三个排序数组C++程序 合并两个已排序的数组C++程序 最小化更改字符以使字符串左右旋转相同时的字符个数C++程序 在顺时针方向将第 i 行正好旋转 i 次以修改矩阵C++程序 通过执行给定的移位操作修改字符串C++程序 将给定数组旋转以使其成为非递减数组C++程序 将所有0移动到数组末尾(使用单次遍历)C++程序 将所有零移动到数组末尾C++程序 两个浮点数相乘C++程序 实现矩阵相乘C++程序 在纯字符串中执行计算C++程序 打印2D数组C++ 程序 以逆螺旋形式打印给定矩阵C++程序 打印给定数组的所有可能旋转C++程序 打印所有在排序数组中形成等差数列的三元组C++程序 使用递归打印数组C++程序 打印1到1000的阿姆斯特朗数C++程序 打印数组在进行K次右旋转后的结果C++程序 打印字符的ASCII值C++程序 打印字符图案C++程序 打印连续字符模式C++程序 打印交叉或X形图案C++程序 打印数组中的偶数C++程序 打印 Floyd’s TriangleC++程序 打印倒立的空心星形金字塔图案C++程序 打印倒置金字塔C++程序 打印左半金字塔图案C++程序 以反螺旋形式打印矩阵C++程序 按蛇形顺序输出矩阵C++程序 按Zig-Zag的方式打印矩阵C++程序 打印数字的乘法表格C++程序 打印数字模式C++程序 打印不重新分配数字C++程序 打印金字塔图案C++程序 打印反向弗洛伊德三角形C++程序 使用递归打印字符串的反转C++程序 打印右半金字塔图案C++程序 打印钻石形状C++程序 打印字符串每个单词的第一个字母C++程序 从给定数字打印最大可能的素数C++程序 打印“G”字形图案C++程序打印三角形图案C++程序 打印两个排序数组中不常见的元素C++程序 输出自己的名字C++程序 从一个文件中读取内容并将其写入另一个文件C++程序 读取屏幕像素C++程序 通过数字逆时针旋转将数组元素重新排列成交替的偶数-奇数序列C++编程 重排数组,使得arr[i]>=arr[j](如果i是偶数),则arr[i]<=arr[j] (如果i是奇数),同时j < iC++程序 在O(n)时间内并使用O(1)额外空间重新排列正负数C++编程基础C++编程示例C++程序 删除数组中所有出现的元素C++程序 从排序数组中删除重复项C++程序 在字符串中替换单个字符C++程序 使用栈翻转字符串C++程序 反转数字C++程序 将矩阵旋转180度C++程序 将矩阵对角线以外的元素沿顺时针方向旋转90度K次C++程序 旋转所有奇数到右侧和所有偶数到左侧C++程序 旋转数字的位数C++程序 旋转给定数字的K位数字C++程序 旋转双向链表N个节点C++程序 按块旋转链表C++程序 将矩阵旋转45度C++程序 旋转矩阵元素C++程序 将矩阵向右旋转K次C++ 程序 将链表中从位置 M 到位置 N 的子列表向右旋转 K 次C++程序 显示运行时异常C++程序 显示线程接口和内存一致性错误C++程序 展示错误类型C++程序 演示不可达代码错误使用C++中This关键字的示例程序C++程序 将数组排成波浪形C++程序 对字符的字符串进行排序C++程序 将数组元素按升序排序C++程序 将给定矩阵排序C++程序 将矩阵按行和列排序C++程序 将字符串拆分为多个子字符串C++程序 将数组拆分并将第一部分添加到结尾-2C++程序 在结构中存储学生信息C++程序 交换字符串中的字符C++程序 交换两个数字使用C++遍历数组C++ 检查输入字符是字母、数字还是特殊字符C++程序 从12小时制转换为24小时制C++程序 统计字符串中给定字符出现的次数C++程序 从文件中删除给定行号C++程序 求第n个偶数C++程序 使用STL检查数组是否回文C++程序 比较 m^n 和 n^mC++程序 创建自定义向量类C++程序 慢慢在控制台上显示字符C++程序 使用OpenGL绘制小屋C++ 使用鼠标移动在OpenGL中绘制圆的程序使用C++中的map查找向量中每个元素的频率的程序C++程序 找出序列9、23、45、75、113...的第N项C++程序 寻找椭圆的面积C++程序 找出恰好有两个位设置的第N个自然数C++程序 查找系列-1、2、11、26、47……的第N个项C++程序 生成车辆号码C++ 不使用任何控制语句为变量赋值