jjzjj

C++,前向声明和递归数据类型

我希望能够有一个map,其中的值是指向map的指针。有点像std::map我知道我可以使用constvoid*而不是const_pointer_to_this_map's_value_type。我见过循环数据类型定义的技巧,例如https://gist.github.com/tivtag/1208331或http://qscribble.blogspot.fr/2008/06/circular-template-references-in-c.html但我不确定它们是否以及如何应用于我的案例。他们在那里使用自己的类(顶点和边;A和B),但这里std::map和std::map::val

c++ - 具有不同包含类型的 STL 容器?

假设我有不同类型的结构组件。也许我有TransformComponent和RigidBodyComponent现在,这就是问题所在:我想要类似std::map的东西将组件类型和id映射到组件的位置。ids是将组件链接在一起的东西。我应该为此使用哪种容器?我不能使用std::map>自类型T取决于您用来为第一张map编制索引的类型索引。 最佳答案 您的用例听起来像是多态性的典型使用。您应该知道,任何在单个容器中存储“非同质”类型的尝试都会带来多态性的性能损失。至于您是使用C++提供的“开箱即用”多态性还是寻求自定义解决方案-这完全取决

c++ - 在 (unordered_)set 中修改 shared_ptr 是否安全?

存储在set或unordered_set中的元素是不可变的。如果更改存储在set中的元素,这可能会导致该集合不再正常工作。但是,这是否包括将shared_ptr存储在集合中时指向的对象?就set而言,它使用less()来比较两个对象。如果指向的对象更改或引用计数更改,结果不应更改。所以我会理解拥有一组shared_ptr并修改指向的对象是完全安全的。但是,由于unordered_set使用hash()来计算其元素的哈希值,这相当于调用hash()shared_ptr的指向对象,修改指向的对象会给我们带来麻烦。这是正确的吗? 最佳答案

c++ - 我应该为游戏和其他实时事件使用 Standard C++ Containers and Stuff 吗?

我是一名C++开发人员,使用VS2012和VS2010开发AAA游戏。我已经阅读了关于不使用VS附带的标准header中提供的STL和其他内容的信息。我在基于游戏编程的网站上阅读了大部分内容,有些内容确实来自业内知名人士。我见过他们甚至不会使用vector、列表、map等,甚至不会使用实用函数和算法的情况。在这种情况下,他们自己编写那些具有几乎相同接口(interface)的容器和东西,并且在如此庞大的代码上花费了大量的调试和实现时间。我有两个问题:1:VS自带的C++实现不是针对平台进行了优化以获得更好的性能吗?是不是使用了一些客户端人员不知道的内部函数,并提供他们自己的实现在基本的

c++ - STL 容器的右值引用限定符

为什么元素访问STL容器的成员函数,例如std::array::operator[]或std::vector::operator[]没有右值引用限定符重载?我当然可以做到std::move(generate_vector()[10]),但我很好奇在标准化引用限定符时是否考虑添加右值引用限定符重载。我认为std::array和std::tuple实际上是同一件事,后者的“元素访问函数(即std::get)”对于const与非const以及左值与右值的所有组合都重载了。为什么不是前者?将右值引用限定的元素访问成员函数(返回右值引用)添加到我的自定义容器是个好主意吗?编辑RichardCri

c++ - 如何在 C++ 中对德语大写字母 Ä、Ö、Ü、ẞ 正确应用 tolower()

自从我打开了一个question之后我就有点糊涂了,我想在这里更具体一点。我有许多包含德语字母的文件,大部分采用iso-8859-15或UTF-8编码。为了处理它们,必须将所有字母转换为小写。例如,我有一个文件(以iso-8859-15编码)包含:Dr.RoseinM.Dassogen.BaptisteriumzuWinland,einsderimArt."Baukunst"(S.496)erwähntenRundgebäudeinGrönland,sollnachPalfreys"HistoryofNewEngland"einevondemGouverneurArnoldum1670

c++ - 理解 std::fmod 和 std::remainder

有人可以解释一下函数的功能吗std::fmod和std::remainder工作。在std::fmod的情况下,有人可以解释步骤以说明如何:std::fmod(+5.1,+3.0)=2.1std::remainder也是如此,它会产生负面结果。std::remainder(+5.1,+3.0)=-0.9std::remainder(-5.1,+3.0)=0.9 最佳答案 作为std::fmod的引用状态:除法运算的浮点余数x/y这个函数计算出的值恰好是x-n*y,其中n是x/y小数部分被截断。返回值具有相同的符号x并且小于y在幅度上

c++ - STL 和 UTF-8 文件输入/输出。怎么做?

我将wchar_t用于内部字符串,将UTF-8用于存储在文件中。我需要使用STL将文本输入/输出到屏幕,还需要使用完整的立陶宛字符集。这一切都很好,因为我没有被迫对文件做同样的事情,所以下面的例子很好地完成了工作:#include#include#include_setmode(_fileno(stdout),_O_U16TEXT);wcout但我很好奇,并试图对文件做同样的事情,但没有成功。当然,我可以使用格式化的输入/输出,但那是……气馁。FILE*fp;_wfopen_s(&fp,L"utf-8_out_test.txt",L"w");_setmode(_fileno(fp),_

c++ - 带有标准容器的 std::shared_ptr

我有一个容器shared_ptrs和我将这些对象交给WindowsAPI,稍后我使用原始ptr获得回调。我要找对shared_ptr事后。这可以用shared_ptr干净地完成吗?(不使用shared_from_this())。非常基本的例子:classCFoo{};typedefstd::shared_ptrCFooPtr;typedefstd::setCFooSet;externCFooSetm_gSet;voidSomeWindowsCallBack(CFoo*pRawPtr){m_gSet.erase(pRawPtr);}我知道这可以用intrusive_ptr来完成很容易,但

c++ - c++ 中是否有可用的并发队列库?

我想知道是否有可用的C++并发队列实现/库? 最佳答案 英特尔线程构建模块有一个:http://threadingbuildingblocks.org/files/documentation/a00129.html.并发运行时中也有一个(VS2010可用)http://msdn.microsoft.com/en-us/library/ee355358.aspx. 关于c++-c++中是否有可用的并发队列库?,我们在StackOverflow上找到一个类似的问题: