问题标签 [tr1]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 我不明白 std::tr1::unordered_map
我需要一个关联容器,它可以让我通过字符串索引某个对象,但它也保持插入的顺序,所以我可以通过它的名称查找一个特定的对象,或者只是迭代它并以我插入的相同顺序检索对象他们。
我认为链表和哈希映射的这种混合应该可以完成这项工作,但在我尝试使用之前,我std::tr1::unordered_map
认为它以我描述的方式工作,但事实并非如此。那么有人可以解释一下的含义和行为unordered_map
吗?
@wesc:我确定 std::map 是由 STL 实现的,而我确定 std::hash_map 不在 STL 中(我认为旧版本的 Visual Studio 将它放在名为 stdext 的命名空间中)。
@cristopher:所以,如果我做对了,区别在于实现(以及性能),而不是它在外部的行为方式。
c++ - 比较 std::tr1::function<> 对象
我一直在尝试使用 tr1 函数模板在 C++ 中实现类似 C# 的事件系统,该函数模板用于存储处理事件的函数。
我创建了一个向量,以便可以将多个侦听器附加到此事件,即:
我希望能够从列表中删除一个处理程序以停止侦听器接收事件。
那么,如何在此列表中找到与给定侦听器对应的条目?我可以测试列表中的“函数”对象是否引用特定函数吗?
谢谢!
编辑:在研究了 boost::signal 方法后,似乎它可能是使用令牌系统实现的,正如你们中的一些人所建议的那样。这是有关此的一些信息。观察者在附加到事件时会保留一个“连接”对象,如果需要,此连接对象用于断开连接。所以看起来无论你是使用Boost还是使用tr1滚动你自己的,基本原理都是一样的。即它会有点笨拙:)
c++ - GCC 3.4.4 上的 C++ tr1(适用于诺基亚 N810 平板电脑)
如何让 C++ tr1成员(尤其是 shared_ptr,但我们希望函数和绑定以及所有其他成员)与GCC 3.4.4(用于诺基亚N810平板电脑)一起工作。
有人做过吗?尝试过这个?
我们升级到 GCC 4.x 来为这个设备进行交叉编译可能是不可行的(但如果你已经这样做了,我们很想知道)。
可能有很多方法,我想避免其他人遇到的死胡同。
我们试图避免引入 boost,因为它可能是相互依赖的(你引入了一个 boost header,你最终会得到 20 个以上),并且保持代码大小对我们很重要。
谢谢!
c++ - tr1::reference_wrapper 有什么用?
最近,我一直在阅读 Scott Meyers 出色的Effective C++书籍。在最后一个技巧中,他介绍了 TR1 的一些功能——我通过 Boost 了解了其中的许多功能。
但是,有一个我绝对不认识:tr1::reference_wrapper。
我将如何以及何时使用 tr1::reference_wrapper?
c++ - 什么是 tr1::result_of 的好用例?
我听说 tr1::result_of 在 Boost 内部经常使用......我想知道是否有任何好的(简单)用例用于 tr1::result_of 我可以在家里使用。
c++ - 惯用 std::auto_ptr 还是只使用 shared_ptr?
现在shared_ptr
在 tr1 中,您认为使用 应该发生std::auto_ptr
什么?它们都有不同的用例,但auto_ptr
也可以用 解决所有用例shared_ptr
。auto_ptr
如果您想明确表示在任何给定点上只有一个类拥有所有权,您会放弃还是继续使用它?
我的看法是,使用auto_ptr
可以增加代码的清晰度,正是通过增加细微差别和代码设计的指示,但另一方面,它在培训新程序员时增加了另一个微妙的问题:他们需要理解智能指针和它们如何工作的详细信息。当您在任何地方只使用一个智能指针时,您只需制定一条规则“将所有指针包装在shared_ptr
”中并完成它。
你对此有何看法?
c++ - 如何在 Visual Studio 2008 SP1 中使用 std::tr1::mem_fun?
VS2008 SP1文档讨论了std::tr1::mem_fun
.
那么为什么,当我尝试使用时std::tr1::mem_fun
,为什么会出现这个编译错误?:
同时,我可以std::tr1::function
毫无问题地使用。
这是我试图编译的示例代码,它应该通过 a调用TakesInt
的实例:Test
function<void (int)>
我正在尝试使用 tr1 版本mem_fun
,因为使用std::mem_fun
我的代码时也无法编译!我无法从编译器错误中判断问题出在我的代码上,还是可以通过使用 tr1's 来解决mem_fun
。那是你的 C++ 编译器错误(或者可能只是我!)。
更新:对。答案是正确拼写为 mem_fn!
但是,当我修复它时,代码仍然无法编译。
这是编译器错误:
c++ - tr1::mem_fn 和具有默认参数的成员
我有一个带有默认参数的成员函数的类。
通过 std::tr1::mem_fn 我可以调用它:
也就是说,如果我想使用默认参数调用对象上的可调用成员,那么正确的语法是什么?
g++ 抱怨以下错误:
尽管如此,当 Class::member 被采用不同参数的成员重载时,我也有同样的问题......
c++ - tr1::mem_fn 和 tr1::bind:关于 const 正确性和重载
以下代码段有什么问题?
尝试用 g++-4.3 编译它,似乎cv -qualifier 重载函数混淆了两者tr1::mem_fn<>
,tr1::bind<>
并出现以下错误:
相反,以下代码段编译但似乎破坏了const-correctness:
有什么线索吗?
c++ - 是否有一个标准的 C++ 函数对象用于拆分 std::pair?
有谁知道是否存在用于访问 std::pair 元素的事实上的标准(即 TR1 或 Boost)C++ 函数对象?在过去的 24 小时内,我曾两次希望拥有类似keys
Perl 哈希函数的东西。例如,最好在 std::map 对象上运行 std::transform 并将所有键(或值)转储到另一个容器。我当然可以编写这样一个函数对象,但我更愿意重用一些吸引眼球的东西。