草庐IT

C++标准

全部标签

c++ - 标准 select1st 和 select2nd

在C++11中是否有任何标准的select1st和select2st等价物?这些似乎只在GNUCPP中定义过. 最佳答案 对于get定义的所有事物:templateconstexprautoselect=[](auto&&x)noexcept->decltype(auto){returnstd::get(std::forward(x));}; 关于c++-标准select1st和select2nd,我们在StackOverflow上找到一个类似的问题: htt

c++ - C和C++标准库的关系

此问题与编程或特定语言概念没有直接关系。我的问题是我们可以使用对C的引用吗?国际标准(例如C11)提供规范引用来描述C中的任何概念图书馆C++.更具体地说,在标题中在N3797::18.3.3[c.limits]中定义Clibrary标题进行了描述。但是C标准提供关于的更全面信息的内容而不是N3797工作草案。关于Clibrary的一切在C11中定义对于C++是正确的C++11中定义的实现的Clibrary或者我们不能依赖什么C标准规定? 最佳答案 对于C标准库,C++回退到C标准并且对于C++11它回到C99而不是C11,在C++

c++ - 在 C 项目中使用 Eigen

我正在做一个从Internet获得的C项目,我正在尝试向该项目添加一些涉及线性代数的函数。在我以前的C++工作中,我通常依赖Eigen来进行线性代数。有没有办法将Eigen用于C项目?如果是,我应该怎么做才能让它发挥作用?(仅仅添加Eigen头文件是不够的,因为例如标准C++文件不会自动包含在内) 最佳答案 Eigen是一个库,它大量使用C++中不存在的功能。因此,它不能直接从C翻译单元使用。但是,您可以将使用Eigen的部分包装在一个单独的共享库中,并公开一个C接口(interface)。这是一个如何编写这样一个库的小例子。图书馆

c++ - 在 C++ 代码中使用的 C header 中转发声明枚举

你不能forwarddeclareanenuminC++,但你可以在C中。对于使用一些C++代码的C代码库,有没有一种方法可以在C中使用前向声明的枚举,当在C++中使用该header时(在extern"C"中)不会导致错误{..}block)?例子:extern"C"{enumMyEnum;}intmain(){return0;}GCC给出错误:error:useofenum‘MyEnum’withoutpreviousdeclarationenumMyEnum;^~~~~~Clang也失败了:error:ISOC++forbidsforwardreferencesto'enum'ty

c++ - 在 C++0x 标准中会有 unordered_map,这与 boost unordered_map 相比如何?

哪个更有效率?有什么好的基准吗? 最佳答案 C++11的std::unordered_map规范类似于基于tr1::unordered_map的boost::unordered_map。话虽这么说,还是有一些细微的差别。在C++11中添加右值引用会导致添加可能对性能有用的emplace和emplace_hint函数。C++11现已得到广泛实现,因此您应该能够开箱即用地使用std::unordered_map。C++14不会对其进行重大更改,C++17将(可能)添加insert_or_assign和try_emplace成员函数。

c++ - C++ 中是否有标准的 3d vector 类

在一个现有的项目中,我看到一个Vector_3d类,模板化,具有vector的常用操作(在代数意义上)。经过剖析,我注意到大量的时间花在了这门课上。我想知道在C++中是否有像3dvector这样的基本概念的众所周知的实现。事实上,使用vector的良好实现可能比尝试优化这个vector更容易。编辑:这是在某些对象的几何表示的上下文中。但它独立于任何可视化。我会看看是否有办法避免过于频繁地调用各种方法。我将查看建议的软件包。 最佳答案 3dvector类没有太多改进空间(基本上,点积/叉积相当容易,矩阵乘法也是如此)。如果在该类(cl

c++ - 标准在哪里谈论别名?

C++标准中的什么地方提到了别名?我查看了目录,没有看到“别名”一词。我试图查看一个定义规则(3.2),但搜索“别名”没有结果。我不知所措。我正在寻找内存别名 最佳答案 别名主要在§3.10[basic.lval]/10中讨论:Ifaprogramattemptstoaccessthestoredvalueofanobjectthroughaglvalueofotherthanoneofthefollowingtypesthebehaviorisundefined:52thedynamictypeoftheobject,acv-qu

c++ - 使用 '?' 而不是 L' 有什么缺点吗?用wchar_t?

使用'?'风格的字rune字来比较或分配已知类型为wchar_t的值而不是使用有什么缺点吗code>L'?'风格的文字? 最佳答案 他们有错误的数据类型和编码,所以这是个坏主意。编译器将使用标准整数转换(例如符号扩展)静默地加宽字rune字(对于字符串,您会得到类型不匹配的编译错误)。但该值可能不匹配。例如,字符0x80到0xff通常映射到不同的Unicode代码点,具体映射因编译器的代码页而异。显然,Unicode不可能使用身份转换映射所有不同的代码页。如果仅仅扩大就足够了,就不需要像mbtowcs这样的函数了。WRT关于'\xA

c++ - 集合类型的可变长度参数列表

好吧,我很确定之前已经以某种方式讨论过这个问题,但我显然太笨了,找不到它。首先:我不是在寻找va_list和其他宏。我正在寻找的是类似于主函数​​参数的东西。众所周知,默认原型(prototype)是:intmain(intargc,char*argv[]);现在,我想要我的程序有类似的东西,但不知Prop体怎么做。假设我们有这个函数:voidFunction(intargc,unsignedshort*args[]){for(inti=0;i我想要这样的函数调用:Function(5,1,2,3,4,5);那行得通吗?因为我不想要va_list的“困惑”,也不想创建:voidAnot

c++ - Boost 可以用作 C++ 标准库的完全替代品吗?

按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭9年前。假设我有最少的header,例如,,也许还有其他一些东西,是否可以使用Boost作为标准C++库,或者是否缺少很多代码?我假设有一个C标准库,它可能有类似printf的糟糕版本(想想Windows),Boost会在中提供更好的实现吗?(或其他)?