草庐IT

initializer-list

全部标签

c++ - 扩展的初始化列表和数组

我有简单的功能,例如:voidfun(vectorvec){//...}voidfun(int*smth){//...}当我在我的程序中写的时候没有。fun({2,3});使用vector参数让我觉得很有趣,我知道它在新的C++扩展初始化列表中,但我想使用新的C++并告诉编译器这只是一个int数组,我该怎么做?编辑:在1行中完成它会很好:) 最佳答案 您不能用数组初始化指针,因为指针不是数组(尽管在某些情况下出现这种情况,但事实并非如此)。您必须传递一个指向预先存在的数组的指针。或者,使用vector重载——当然,你更喜欢这个?!如

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++ : Initializing base class constant static variable with different value in derived class?

我有一个带有常量静态变量a的基类A。我需要类B的实例对静态变量a具有不同的值。这怎么能实现,最好是静态初始化?classA{public:staticconstinta;};constintA::a=1;classB:publicA{//???//Howtoset*a*toavaluespecifictoinstancesofclassB?}; 最佳答案 你不能。所有派生类共享一个静态变量实例。 关于C++:Initializingbaseclassconstantstaticvaria

将实例方法作为callback in Class Initializer中的回调

考虑以下代码:classBar{letcallback:()->()init(callback:@escaping()->()){self.callback=callback}funcevent(){self.callback()}}classFoo{letbar:Barinit(){self.bar=Bar(callback:self.handler)}funchandler(){print("Handled")}}基本想法是我们想要每个Foo有一个Bar,当event()被称为Foo'bar,将会通知Foo的处理程序方法。但是,上面的设置警告Foo自初始化,因为我们正在使用self在初始化

c++ - 使用空的初始化列表直接初始化

structX{X(){std::cout打印出来defaultctor这是有道理的,因为空括号值初始化对象(我认为)。然而,structX{X(){std::cout){std::cout为此,我得到了initializerlist我不觉得这种行为很奇怪,但我并不完全相信。这是什么规则?此行为是否写入标准的某些部分? 最佳答案 要查看实际情况,声明复制和移动构造函数,在C++14模式或更早版本中编译,并禁用复制省略。Colirulink输出:defaultctormovector在第一个片段中,编译器寻找X的构造函数接受一个参数,

c++ - 为什么我不能将 boost::function 存储在 std::list 中?

我得到以下编译错误:error:expected`;'before'it'"这是我的代码:#include#includetemplatevoidexample(){std::list>::iteratorit;}为什么会这样?我该如何解决? 最佳答案 您需要将typename放在该行的前面,因为您执行::iterator的类型取决于模板参数T。像这样:templatevoidexample(){typenamestd::list>::iteratorit;}考虑这条线std::list>::iterator*it;这可能意味着乘法

Qt : has initializer but incomplete type 中的 C++ 错误

voidFindWords::getTextFile(){QFilemyFile(":/FindingWords2.txt");myFile.open(QIODevice::ReadOnly);QTextStreamtextStream(&myFile);QStringline=textStream.readAll();myFile.close();ui->textEdit->setPlainText(line);QTextCursortextCursor=ui->textEdit->textCursor();textCursor.movePosition(QTextCursor::S

c++ - 指向成员函数的指针 - C++ std::list 排序

如何将指向成员函数的指针传递给std::list.sort()?这可能吗?谢谢structNode{uint32_tID;char*Value;};classmyClass{private:uint32_tmyValueLength;public:listMyQueue;boolcompare(Node*first,Node*second);booldoStuff();}boolmyClass::compare(Node*first,Node*second){unsignedintii=0;while(iiValue[ii]Value[ii]){returntrue;}elseif(f

c++ - 删除 std::list::iterator 不会使迭代器无效并销毁对象吗?

为什么下面打印2?listl;l.push_back(1);l.push_back(2);l.push_back(3);list::iteratori=l.begin();i++;l.erase(i);cout我知道erase返回什么,但我想知道为什么这样可以?或者它是未定义的,还是取决于编译器? 最佳答案 是的,这是未定义的行为。您正在取消引用一种野指针。在erase之后,您不应该使用i的值。是的,erasedestructs指向的对象。但是,对于POD类型,销毁不会执行任何操作。erase不会为被删除的迭代器分配任何特殊的“空”

c++ - 错误 : initializer fails to determine size of ‘K’

我在行中收到错误“初始化器无法确定‘K’的大小”intK[]=newint[Vertices->total];如何解决? 最佳答案 改变intK[]=newint[Vertices->total];到int*K=newint[Vertices->total];第一个是Java创建数组的方法,其中K是对整数数组的引用。但是在C++中,我们需要让K成为一个指向整数类型的指针。 关于c++-错误:initializerfailstodeterminesizeof‘K’,我们在StackOver