草庐IT

definition-lists

全部标签

list - Kotlin 将 List 转换为可变参数

我有List类型的输入数据classUnitWithComponents{varunit:Unit?=nullvarcomponents:List=ArrayList()}我想将数据转换为vararg的Unit目前我在做*data.map{it.unit!!}.toTypedArray().有没有更好的方法? 最佳答案 funfoo(varargstrings:String){/*...*/}使用foo(strings=arrayOf("a","b","c"))vallist:MutableList=listOf("a","b","

c++ - 将 std::list 公开为只读

我有一个类,其中包含一个std::list。我想公开此列表,但仅以其中包含的结构和数据是只读的方式公开,但仍可与迭代器一起使用。我让它“工作”atm的方法是返回列表的拷贝。这让我的类(class)“安全”,但当然不会阻止调用者修改他们的列表拷贝并且得不到正确的数据。有没有更好的办法? 最佳答案 为什么不返回conststd::list&呢? 关于c++-将std::list公开为只读,我们在StackOverflow上找到一个类似的问题: https://st

c++ - 使用预处理器从 f(list) 中删除参数列表

在我看来,我看到在boost库中做了一些奇怪的事情,而它最终正是我现在想要做的。虽然找不到...我想创建一个带有签名并将其转换为函数指针的宏:voidf(int,int){}...void(*x)(int,int)=WHAT((f(int,int)));x(2,4);//callsf()我特别需要它来处理成员函数指针,以便WHAT接受两个参数:WHAT(ClassType,(f(int,int));//resultsinstatic_cast(&ClassType::f)为了解决我的问题,这不是绝对必要的,但它会让事情变得更好。这个问题本身与函数指针无关。需要做的是使用预处理器将“f(

c++ initializer_list 和 shared_ptr 行为

这个问题在这里已经有了答案:Doubledeleteininitializer_listvs2013(1个回答)关闭8年前。我正在测试vs2013c++initializer_list。下面的代码可以编译。但是当我运行exe时崩溃。#include#includeclassBase{};classDerived:publicBase{};voidDoSomething(std::initializer_list>list){}intmain(){autoip=std::make_shared();std::cout()});//ng//DoSomething({ip,std::make

c++ - list 常量与 C++ 关键字 "const"

阅读Meyers的书(第2项“Preferconstto#define”)我想理解下面列出的一些句子:引用#defineASPECT_RATIO1.653和constaspect_ratio=1.653之间的比较,Meyers提出“......在浮点常量的情况下(例如在这个例子中)使用常量可能会产生比使用​​#define更小的代码。”问题是:Meyers的代码越小,意味着可执行文件的磁盘空间越小?为什么变小了?我认为这在32位系统上可能有效,因为在这种情况下int(或指针)需要4个字节和一个双8字节。因为ASPECT_RATIO可能不会进入符号表,所以名称会被值替换,而在其他情况下可

c++ - 我试图在 C++03 中嵌套 boost 的 "map_list_of",但显然构造不明确?

考虑一下:#include#include#include#includeusingboost::assign::map_list_of;conststd::map>test=map_list_of(100,map_list_of(1,'a')(2,'b'))(101,map_list_of(1,'c')(2,'d'));intmain(){std::coutsecond.find(2)->second我希望结果是一个程序,在执行时输出d.相反,Igetthis:$clang++-std=c++03-O2-Wall-pedantic-pthreadmain.cppInfileinclu

c++ - 使用 std::initializer_list 作为成员变量

这个问题在这里已经有了答案:Canitbesafetokeepacopyofanstd::initializer_list?Whatistherationale?(1个回答)关闭4年前。我有一个A类,它接受一个initializer_list并将其存储为一个成员变量。classA{public:A(std::initializer_listil):m_il(il){}std::initializer_listm_il;};另一个类B将A作为成员变量,默认使用initializer_list初始化classB{public:B(){std::cout现在,当我在main中运行这段代码时,

c++ - initializer_list c++11 中的评估顺序

在下面的代码中,是否要求在f2之前调用f1(或反之亦然),还是未指定?intf1();intf2();std::initializer_listlist{f1(),f2()}; 最佳答案 这是C++标准的一个有趣的角落,其中执行顺序定义明确。第8.5.4节[dcl.init.list],第4段:Withintheinitializer-listofabraced-init-list,theinitializer-clauses,includinganythatresultfrompackexpansions(14.5.3),aree

c++ - 为什么 --list.end() 编译?

list的end()返回尾后迭代器的拷贝,对吧?因此,list.end()是一个右值,对吗?为列表迭代器重载的--运算符函数采用非常量引用,对吧?不能将右值绑定(bind)到非常量引用,对吗?那怎么会呢std::listlst;//...--l.end();`编译?正如正确指出的那样,我的第三点不一定是正确的。但是这段也可以编译的代码怎么样?structA{};voidf(A&){}Aa(){returnA();}intmain(){f(a());} 最佳答案 the--operator-functionoverloadedforl

c++ - list.sort 和 std::sort 有什么区别?

我正在尝试使用clang编译以下代码,但出现以下错误。我想知道为什么使用list类中的sort可以工作,但不能使用std::sort。#include#includeintmain(){std::stringstrings[]={"hello","nihao","byebye","yo"};std::listcars(strings,strings+sizeof(strings)/sizeof(char**));//cars.sort(std::less());//compilesfineandproduceasortedliststd::sort(cars.rbegin(),cars