草庐IT

Initializer-list

全部标签

c++ - 如何编写接受 std::vector 或 std::list 的函数?

我想这个问题有点简单。vector和列表都有push和pop函数,而且-更重要的是-可以迭代:for(autovalue:items)...然而,std::vector和std::list似乎并不共享一个基类。因此,问题是:我如何编写一个函数来接受其中一个(或者,实际上,任何其他适合实现的东西)?std::lista;std::vectorb;DoSomething(a);DoSomething(b);我想在不重载的情况下进行。如果使用模板,它们不应该导致疯狂的错误消息。比如下面的代码——inta;DoSomething(a);--应该会导致调用站点出现编译错误,不在模板内的某处!有人

c++ - 滚动时Qt List Widget动态内容加载

我想为Qt(不是QML)创建一个小部件,它派生自QListWidget等,并在向上/向下滚动时动态加载内容,就像大多数Android/iOS应用程序一样。有人知道哪种方法最好吗?干杯, 最佳答案 动态加载内容并不意味着它是无限的。为此,只需实现模型的fetchMore()和canFetchMore()方法。 关于c++-滚动时QtListWidget动态内容加载,我们在StackOverflow上找到一个类似的问题: https://stackoverflow

c++ - 不能将 std::vector<T> 转换为 std::initializer_list<T> 吗?

我还以为有人可以做到这一点?然而,情况似乎并非如此。为什么?还是我做错了什么?#include#include#includeusingnamespacestd;voidfn(std::initializer_listi){for(intivalue:i){cout{4,5,6})return0;}demo我问这个的原因是因为我有一个带有初始化列表的类,我是从它派生的,但需要在将初始化列表传递给基类之前修改初始化列表。我怎样才能做到这一点? 最佳答案 有时旧的方法是最好的方法:只传入范围:voidfn(std::initialize

c++ - std::forward_list 和序列概念要求

标准委员会选择为std::forward_list实现API是否有某种原因使其不满足序列容器概念要求?Sequence概念要求指定容器必须与以下表达式兼容:c.insert(it,v);//insertatpositionc.insert(it,n,v);//fillinsertc.insert(it,begin,end);//insertrange...其中it是一个迭代器,v是一个元素,n是一个整数,begin/end是一个迭代器范围。这个API没有理由不能用于单链表,因为insert函数需要一个迭代器起始位置。但出于某种原因,std::forward_list具有insert_a

【C++练级之路】【Lv.8】【STL】list类的模拟实现

快乐的流畅:个人主页个人专栏:《C语言》《数据结构世界》《进击的C++》远方有一堆篝火,在为久候之人燃烧!文章目录引言一、结点二、迭代器2.1成员变量与默认成员函数2.2operator*2.3operator->2.4operator++2.5operator--2.6relationaloperators三、list3.1成员变量3.2迭代器3.2.1begin3.2.2end3.3默认成员函数3.3.1constructor3.3.2destructor3.3.3copyconstructor3.3.4operator=3.4修改3.4.1insert3.4.2push_front3.4

具有复杂结构的 C++ 初始化列表

我正在修改此C代码以与G++编译器一起使用,但我被困在这个相当复杂的结构上。G++编译器提示“抱歉,未实现:不支持非平凡的指定初始值设定项”。我知道一个涉及编写构造函数的解决方案,但对构造函数的调用将是巨大的并且太困惑了。是否有某种方法可以简化它并折射它,以便它更具可读性和g++兼容。staticconststruct{struct{__le32magic;__le32length;#ifndefUSE_DEPRECATED_DESC_HEAD__le32flags;#endif__le32fs_count;__le32hs_count;}__attribute__((packed))

数组的 C++ 构造函数初始值设定项

我正在使用C++11,我想在构造函数的初始化列表中初始化一个对象数组。我找到了一个相关的问题,但它不符合我的需求:我希望数组对象的类是不可复制的。我希望数组对象的类有一个析构函数。编译:classfoo{public:foo(int&n):i(n){}//~foo(){}//Ifuncommented,itdoesn'tcompile.private:int&i;//Disablecopyconstructorandassignmentoperator.foo(constfoo&)=delete;foo&operator=(constfoo&)=delete;};classbar{pu

c++ - 编译器错误 : "Non-aggregates cannot be initialized with initializer list."

尝试在C++中创建一个简单的vector时,出现以下错误:Non-aggregatescannotbeinitializedwithinitializerlist.我使用的代码是:#include#include#includeusingnamespacestd;intmain(intargc,char*argv[]){vectortheVector={1,2,3,4,5};cout我试着把:CONFIG+=c++11进入我的.pro文件,保存并重建它。但是,我仍然遇到同样的错误。我正在使用我认为是Qt5.5的东西,如果它对你有意义的话,这是当我按下About时发生的事情:Qt'sAb

c++ - 初始值设定项列表的模板替换错误

我知道如何使下面的代码工作:我只是取消注释Printer的第二个构造函数。想法很简单:我想编写一个构造函数/函数,它可以采用存储在一些我可以迭代的抽象数据结构中的多个参数。我希望它至少适用于vector和列表(确实如此),但也适用于初始化列表(但它不适用)。我使用以下简单语法(可能比我想要的更通用,我不使用模板模板)所以我不必编写可变参数模板来处理std::的分配器类型:#include#include#include#includeusingnamespacestd;structPrinter{templatePrinter(constContainer&cont){for(cons

c++ - initializer_list函数重载的解决

#includeusingnamespacestd;classA{public:explicitA(constinitializer_list&a){}};voidfunc(constvector&a){}voidfunc(Aa){}intmain(void){func({1,2,3});}此代码编译失败:(19):errorC2668:'func':ambiguouscalltooverloadedfunction(13):note:couldbe'voidfunc(A)'(9):note:or'voidfunc(conststd::vector>&)'with[_Ty=int](1