jjzjj

forward-compatibility

全部标签

c++ - list 和 forward_list 性能之间的区别?

与c++11一样,我们有两种类型的列表:std::listlst={1,2,3,4,5};std::forward_listflst={5,4,3,2,1};我们知道list是基于双向链表的,forward_list是基于单向链表的。我们应该如何决定使用哪一个?以上任何列表是否有任何性能优势? 最佳答案 Howshouldwedecidewhichonetoused?决定是否需要双向迭代。如果前向迭代足够好,请使用std::forward_list,除非您需要支持早于C++11的C++版本,后者可能只有std::list。Isthe

c++ - 在 C++ 中使用 std::forward

我遇到过一段代码,其中使用了std::forward。我在谷歌上搜索了很长时间,但无法理解它的真正目的和用途。我在stackoverflow上看到过类似的帖子,但还是不太清楚。有人可以用一个简单的例子来解释吗?PS:我已经经历过这个page,但仍然无法欣赏它的用途。请不要将此问题标记为重复,而是尝试帮助我。 最佳答案 如您链接的页面所示:Thisisahelperfunctiontoallowperfectforwardingofargumentstakenasrvaluereferencestodeducedtypes,prese

c++11:为什么 std::forward 中的 static_assert 是必需的?

在move.h中,forward有两个重载templateconstexpr_Tp&&forward(typenamestd::remove_reference::type&__t)noexcept{returnstatic_cast(__t);}templateconstexpr_Tp&&forward(typenamestd::remove_reference::type&&__t)noexcept{static_assert(!std::is_lvalue_reference::value,"templateargumentsubstituting_Tpisanlvalueref

c++ - C++ 模板是否能够从父类获取 "forward any class function"?

classFoo{public:voidmethodA();};classManagedFoo{FoofooInst;public:voidmethodA(){doSomething();fooInst.methodA();}};现在我想把ManagedFoo做成一个模板,管理任何类而不仅仅是Foo,并且在调用Foo的任何函数之前,先调用doSomething。templateclassManager{_TyManaged_managedInst;voiddoSomething();public:/*Forwardeveryfunctioncalledby_managedInst*//

C++ 错误 : forward declaration of 'struct. ..?

循环包含问题我转发声明其中一个类在另一个类的标题中,试图解决它们的循环包含问题。这是我的两个文件:第一个文件(Parameter.h):#pragmaonce#include"Token.h"`classExpression;classParameter{public:Parameter(){string=newToken();identifier=newToken();expr=newExpression();}Token*string;Token*identifier;Expression*expr;};第二个文件(Expression.h):#pragmaonce#include

c++ - 命名空间 'forward' 中没有名为 'std' 的成员

最近在XCode中制作并测试了一个使用boost的处理库。我刚刚在IDE中设置了一个基本项目,进行了编码,并且构建良好。我现在想在另一个应用程序中使用该库。另一个应用程序的xcode项目是使用第3方工具自动创建的。当我尝试将我的基于boost的库包含在这个其他应用程序中时,我收到错误提示...命名空间“std”中没有名为“forward”的成员还有,线。.#include给出预处理器错误未找到“元组”文件看到原始库在我的机器上构建得很好,错误一定是build设置的差异,但我看不到差异,也不知道比较2个不同的build设置的好方法项目。任何人都可以建议可能导致我出现问题的build设置吗

c++ - 为什么 C++ 字符串不需要 std::forward 来调用所需的函数?

我正在学习std::forward。我写了一个简短的程序来测试如果我们在将参数转发给另一个函数调用之前不调用std::forward会发生什么:#include#include#includeusingnamespacestd;classExample{};ostream&operatorvoidtest_forward_wrapper(T&&arg){test_forward_inner(arg);}intmain(){Examplee;test_forward_wrapper(e);test_forward_wrapper(Example());cout在这里,我尝试将左值和右值从

c++ - 为什么没有给 std::forward_list 一个 count() 成员函数?

我明白为什么std::forward_listdoesnothaveasize()memberfunction,因为O(1)版本会搞乱某些splice()的复杂性过载,并且由于O(N)version将与标准库的所有其他容器不一致。这也是事实std::list和std::forward_list已经有几个其他成员函数与中的表亲具有相同的语义标准库的一角(merge()、reverse()、remove()、remove_if()、unique()、sort())。那么为什么不是count()O(N)的成员函数提供给std::forward_list的复杂性具有返回std::distanc

C++ 构造函数 : Perfect forwarding and overload

我有两个类,A和B,B派生自A。A有多个构造函数(下例中有2个)。B有一个额外的成员要初始化(它有一个默认的初始化器)。我怎样才能实现B可以使用A的构造函数之一来构造,而不必手动重写B中A的所有构造函数重载?(在下面的示例中,否则我必须为B提供四个构造函数:B():A(){},B(strings):A(s){},B(intb):A(),p(b){},B(strings,intb):A(s),p(b){},而不是只有两个,至少在忽略默认参数的可能性时是这样)。我的方法是完美转发,但是下面的场景会报错:#include#includestructA{A(conststd::string&a

c++ - 忽略注释 : offset of packed bit-field without using "-Wno-packed-bitfield-compat"

当我尝试编译以下union时,弹出此警告:10:5:note:offsetofpackedbit-field'main()::pack_it_in::::two'haschangedinGCC4.4#pragmaGCCdiagnosticignore"-Wpacked-bitfield-compat"unionpack_it_in{struct{uint8_tzero:3;uint8_tone:2;uint8_ttwo:6;uint8_tthree:4;uint8_tfour:1;}__attribute__((packed))u8_2;uint16_tu16;};#pragmaGCC