我想在一些C++程序中使用PI常量和三角函数.我得到了三角函数include <math.h>.但是,此头文件中似乎没有PI的定义.
如何在不手动定义PI的情况下获取PI?
有很多和*_v后缀*_t,例如std::is_same_v、std::invoke_result_t和数result_of_t以百万计的其他此类函数。
它们为什么存在?std::result_of::type在任何情况下公开诸如或 之类的实现细节是否有益std::is_same::value?忽略标准合规性,_v _t版本是否应该始终是首选?难道这些::type ::value版本根本就不存在吗?
我试图找到在C/C++中使用数字e的更"自然"的方法.我专注于计算函数e ^ n.
我认为'cmath',默认情况下,不支持(函数和常量).但是,它可以包含编译器定义的常量,在本例中M_E.这可以通过包含声明来完成#define _USE_MATH_DEFINES.
另一方面,e可以定义为常数:
#define E 2.71828182845904523536;
Run Code Online (Sandbox Code Playgroud)
要么
const double EULER = 2.71828182845904523536;
Run Code Online (Sandbox Code Playgroud)
说这个.哪一个是接近这个数学常数的最"标准"方法?是其他图书馆吗?
一个答案C++ 14个可变模板:目的是什么?任何用法示例?提出了一个变量模板+泛型lambdas的用法示例,它看起来像这样:
void some_func() {
template<typename T>
std::map<int, T> storage;
auto store = []<typename T>(int key, const T& value) { storage<T>.insert(key, value) };
store(0, 2);
store(1, "Hello"s);
store(2, 0.7);
// All three values are stored in a different map, according to their type.
}
Run Code Online (Sandbox Code Playgroud)
不幸的是它没有编译所以我试图"修复"它,这是我到目前为止的尝试.
#include <map>
template<typename T>
std::map<int, T> storage;
void some_func() {
auto store = [](int key, const auto& value) { storage<decltype(value)>.insert(key, value); };
store(0, 2);
store(1, std::string("Hello"));
store(2, 0.7);
}
Run Code Online (Sandbox Code Playgroud)
错误消息是:
main.cpp:7:76: error: no …Run Code Online (Sandbox Code Playgroud)