草庐IT

last_list

全部标签

c++ - 可以递归解析 va_list 中的参数吗?

假设我想创建一个递归解析可变参数列表的函数,让函数的每次调用都读取下一个参数?将va_list交给下一个函数后,我不打算在调用函数中继续使用va_list。下面的代码可以吗:voidVarArgRecursive(va_listargs){intnextArg=va_arg(args,int);if(nextArg!=-1){printf("Nextarg%d\n",nextArg);VarArgRecursive(args);}}voidVarArgFunc(intfirstArg,...){va_listargs;va_start(args,firstArg);VarArgRecu

c++ - 使用 Pair 模板实现 List 模板

我正在尝试使用我自己的对类来实现单向链表模板类。我这样做是为了刷新我的C++技能,所以这就是我不只是使用STL的原因。我的列表模板由单一类型参数化:templateclassLinkedList{private:Pair*>*_head;};问题是我希望_head是一对,其第二个元素是同一类型的一对。这个想法是_head.first是元素,_head.second是指向列表其余部分的指针,如果它是最后一个元素,则为NULL。有没有办法使用引用自身的模板化类型? 最佳答案 也许你正在尝试做这样的事情:templateclassLink

c++ - 如何使用 initializer_list

我有:1)NetBeans7.32)Digiav4.8.4的Qt。3)MinGW编译器。你能帮我初始化我的阵列吗?不幸的是,我失败了。我知道我必须使用initializer_list。但是我的文件中包含什么以及如何组织所有内容对我来说都是个谜。你能帮帮我吗?图.h#includeclassFigure:publicQObject{Q_OBJECTprivate:intshape[4][4][4];图.cppFigure::Figure(){std::initializer_listinit;autoinit=std::initializer_list({{0,0,0,0},{0,1,1

c++ - List<Char> 在 C++ 中键入 constexpr 字符串

我正在尝试模仿cons-cell就像函数式编程语言中的列表结构,在C++中使用constexpr.我有一个pair类型,开始。这是两个不同事物的持有者,但也支持嵌套对。这是代码。templatestructpair{constexprpair():_car{E1{}},_cdr{E2{}}{}constexprpair(constE1&car,constE2&cdr):_car{car},_cdr{cdr}{}constexprautocar()const{return_car;}constexprautocdr()const{return_cdr;}friendstd::ostrea

c++ - 用于初始化多维数组的嵌套 initializer_list

出于某些原因,我必须在C++中实现一个多维数组类。有问题的数组是这样的:template>>classArrayfinal{private:std::vectorshape_;std::vectordata_;public://Somepublicmethods}T是存储在数组中的元素类型,并且数组的维度不是模板化的,因为用户应该能够reshape数组,例如:Arrayarray=Array::zeros(3,2,4);array.reshape(4,6);虽然上面提到的功能实现的很顺利,但是我卡在实现这个类的“开始”,就是初始化数组...我的问题如下:是否有任何方法可以拥有这样的构造

c++ - std::list 中的 max_size() 函数如何计算最大尺寸?

在std::list中,max_size()函数中的最大大小是如何计算的?现在我意识到这取决于实现,但假设我是制作标准库的人。我将如何确定可移植的特定类型T的list的最大限制? 最佳答案 它几乎总是N的最大值,其中容器最多可以有N个元素。这几乎总是意味着所讨论平台上无符号整数类型的最大值除以要存储在容器中的元素类型的大小。 关于c++-std::list中的max_size()函数如何计算最大尺寸?,我们在StackOverflow上找到一个类似的问题: h

c++ - 为什么 std::list 想不带参数调用我的分配器?

抱歉,我不能贴出具体的代码。我希望这个小样本就足够了:假设我有一个这样的分配器:templateclassMyAllocator{//...typedefsMyAllocObject_allocObject;public:MyAllocator(){//_allocObject=new..}MyAllocator(constMyAllocator&alloc){_allocObject=alloc.getAllocObject();}templateMyAllocator(constMyAllocator&alloc){_allocObject=alloc.getAllocObject

c++ - 为什么 std::make_unique 等不存在 std::initializer_list 重载?

参见ShouldIuse()or{}whenforwardingarguments?.foo是std::vector克隆。在N4140中,unique.ptr.createstd::make_unique指定为:templateunique_ptrmake_unique(Args&&...args);Remarks:ThisfunctionshallnotparticipateinoverloadresolutionunlessTisnotanarray.Returns:unique_ptr(newT(std::forward(args)...)).这意味着需要实现才能使用()而不是{

c++ - 使用可变参数模板制作类似元组的编译时 "linked-list"

我在考虑std::tuple的可能实现方式(以及任何类似的模板类,在编译时定义了可变数量的“成员”),我认为也许可以创建一个类似于链表的“递归类型”。我尝试编译以下测试用例:templateclassTupleLite{public:FirstTypetype_;TupleLiteother_types_;};intmain(){TupleLitemytuple;}类本身编译没有错误,但实例化抛出错误wrongnumberoftemplatearguments(0,shouldbe1ormore).我相信这是因为TupleLite尝试实例化TupleLite,它试图实例化一个Tuple

C++ 构造函数采用大小为 1 的 std::initializer_list

下面的示例程序代码背后的想法是说明这样一个事实,即当只给定一个元素时,拥有一个不等同于默认复制构造函数的初始化列表构造函数可能会导致Clang以某种方式出现意想不到的结果。它还表明Clang和GCC没有在复制构造函数和初始化列表构造函数之间实现相同的优先级,这实际上使得可移植代码不可能使用这种初始化列表构造函数。//Includedirective.#include//Thestructusedinthiscase.structFoo{//Membervalue.intval;//Defaultconstructor.Foo():val(0){}//Initializerlistcon