天天看点

C++ noexcept异常指示符、浮点数格式控制、 随机数库

作者:明政面朝大海春暖花开
  1. noexcept异常指示符:

    noexcept异常指示符用于表示一个函数是否会抛出异常。它可以放在函数声明或定义的末尾,用来指示该函数是否会抛出异常。如果函数标记为noexcept,则表示该函数不会抛出任何异常。如果函数标记为noexcept(false),则表示该函数可能会抛出异常。

  2. 示例:
  3. void func1() noexcept { // 该函数不会抛出异常 } void func2() noexcept(false) { // 该函数可能会抛出异常 }
  4. 在使用noexcept异常指示符时,编译器会在编译期间对函数进行静态检查,以确保在noexcept函数中不会出现异常。如果在noexcept函数中出现了异常,std::terminate函数将会被调用,导致程序终止。
  5. noexcept运算符:

    noexcept运算符用于在运行时检查一个表达式是否会抛出异常。它返回一个bool值,表示表达式是否会抛出异常。如果表达式不会抛出异常,则返回true;否则返回false。

  6. 示例:
  7. int a = 5; int b = 0; bool isNoExcept = noexcept(a / b); // 返回false,因为除以0会引发异常
  8. noexcept运算符可以在编译期间进行优化,以便在运行时避免不必要的异常检查。

总结:noexcept异常指示符和noexcept运算符是C++中用于处理异常的工具。noexcept异常指示符用于表示一个函数是否会抛出异常,而noexcept运算符用于在运行时检查一个表达式是否会抛出异常。通过使用这些工具,您可以更好地管理和处理异常,提高程序的可靠性和性能。

C++中,我们可以使用格式控制符来控制浮点数的输出格式。下面是一些常用的格式控制符及其示例:

  1. 默认格式(不指定格式控制符):
double number = 3.14159;
std::cout << number;  // 输出:3.14159
           
  1. 定点格式(fixed):
double number = 3.14159;
std::cout << std::fixed << number;  // 输出:3.141590
           

在定点格式下,浮点数会按照小数点后的位数进行输出。

  1. 科学计数法格式(scientific):
double number = 3.14159;
std::cout << std::scientific << number;  // 输出:3.141590e+00
           

科学计数法格式会将浮点数以科学计数法的形式输出。

  1. 设置小数点后的位数:
double number = 3.14159;
std::cout << std::fixed << std::setprecision(2) << number;  // 输出:3.14
           

通过使用std::setprecision(n)来设置小数点后的位数,其中n是你想要的位数。

  1. 对齐输出:
double number = 3.14159;
std::cout << std::setw(10) << std::left << number;  // 输出:3.14159   
           

通过使用std::setw(n)来设置输出宽度,其中n是你想要的宽度。std::left表示左对齐输出。

这些只是一些常用的浮点数格式控制示例,你可以根据需要进行调整和组合使用。请注意,在使用这些格式控制符之前,你需要包含<iomanip>头文件。

C++标准库中提供了一个随机数生成器的库,名为<random>。这个库提供了多种生成随机数的方法和算法,可以满足不同的需求。

下面是一个使用<random>库生成随机数的示例:

C++ noexcept异常指示符、浮点数格式控制、 随机数库

在这个示例中,我们首先创建了一个随机数引擎,使用std::random_device和std::default_random_engine来生成一个种子。

然后,我们创建了一个随机数分布,使用std::uniform_int_distribution<int>指定了随机数的范围为1到100。

最后,我们调用distribution(engine)生成一个随机数,并将其输出到控制台。

你可以根据需要调整分布的范围和类型,以满足你的具体需求。例如,你可以使用std::uniform_real_distribution来生成一个指定范围内的随机实数。

注意,为了获得更好的随机性,通常建议在程序的开头使用std::random_device来生成种子,然后将种子传递给随机数引擎。这样可以避免每次运行程序时生成相同的随机数序列。

希望这个示例对你有帮助!如果你有任何其他问题,请随时提问。

《More Effective C++》是一本由Scott Meyers撰写的C++编程指南,旨在帮助开发人员更有效地使用C++语言。在书中,Meyers详细解释了指针(pointers)和引用(references)之间的区别,并提供了使用它们的一些建议。

指针是一个变量,它存储了一个内存地址,该地址指向另一个变量的存储位置。通过指针,我们可以直接访问和修改存储在该地址上的值。指针可以为空(null),并且可以通过指针算术运算来遍历数组或分配动态内存。指针的主要优势是它们的灵活性和直接性。

引用是一个已经存在的变量的别名。它们提供了对已存在变量的简洁访问方式,可以像使用原始变量一样使用引用。引用不能为空,一旦初始化,它们总是引用同一个对象。引用的主要优势是它们的简洁性和安全性。

强调了以下几点关于指针和引用的区别:

1. 使用指针时需要注意空指针的可能性,以避免悬空指针的问题,而引用则不存在这个问题。

2. 指针可以被重新赋值,可以指向不同的对象,而引用在初始化后不能再引用其他对象。

3. 指针可以为null,而引用必须始终引用一个已存在的对象。

4. 指针可以进行指针算术运算,而引用不能进行类似的操作。

Meyers还提供了一些建议来帮助开发人员更好地使用指针和引用:

1. 在可能的情况下,优先使用引用而不是指针,因为引用更简洁、更安全。

2. 当函数需要返回多个值时,可以使用指针或引用作为输出参数。

3. 在使用指针时,要确保指针指向的对象在使用之前已经初始化,并在使用完毕后进行适当的内存管理。

总而言之,指针和引用在C++中都是重要的概念,它们在不同的情况下具有不同的用途和特点。了解它们之间的区别并根据具体情况做出正确的选择,可以帮助开发人员编写更安全、更有效的C++代码。

摩根财团是指摩根家族在美国银行业和金融业的巨大影响力。该财团由约翰·皮尔庞特·摩根(John Pierpont Morgan)创办,在19世纪末和20世纪初达到了巅峰时期。

摩根财团的主要内容包括以下几个方面:

1. 银行业:摩根财团在银行业具有强大的影响力。约翰·皮尔庞特·摩根创办了J.P.摩根银行(J.P. Morgan Bank),该银行成为了美国最大的商业银行之一,为美国企业提供了大量的融资和投资服务。

2. 投资银行:摩根财团还在投资银行领域扮演着重要角色。他们参与了许多重大的合并与收购交易,并为企业提供了融资和咨询服务。

3. 铁路业:摩根财团在美国铁路业也有重要影响力。他们通过投资和控制铁路公司,推动了美国铁路系统的发展,并在铁路建设和运营中发挥了重要作用。

4. 政府关系:摩根财团与政府之间有着密切的联系。他们与政府官员合作,影响政策制定和经济决策,以促进自身利益和金融业的发展。

5. 国际影响力:摩根财团不仅在美国,还在国际金融领域具有重要地位。他们通过与欧洲银行家的合作,推动了国际金融市场的发展,并对世界经济产生了深远影响。

总的来说,摩根财团通过银行业、投资银行、铁路业等领域的活动,以及与政府和国际金融界的关系,成为了美国金融界的巨头,并对全球金融体系产生了重要影响。

继续阅读