草庐IT

c++ - 共享指针不增加 use_count

我正在尝试了解如何在C++中使用std::shared_ptr。但这很令人困惑,我不明白如何创建指向同一对象的多个共享指针。甚至文档和在线资料也不是很清楚。以下是我编写的一小段代码,用于尝试理解std::shared_ptr的行为:#include#includeusingnamespacestd;classNode{public:intkey;Node(){key=0;}Node(intk){key=k;}};intmain(){Nodenode=Node(10);shared_ptrptr1((shared_ptr)&node);coutptr2=make_shared(node)

c++ - 如何将 typedef 变量分配为静态

谁能告诉我下面程序中的错误。#includeusingnamespacestd;classA{public:typedefintcount;staticcountcnt;};countA::cnt=0;intmain(){return0;}错误计数没有命名类型 最佳答案 您必须使用A::countA::cnt=0;,因为您的typedef是在类A的范围内定义的。即要么将typedef移到类之外,要么像上面那样使用范围解析。 关于c++-如何将typedef变量分配为静态,我们在Stack

c++ - Factory 类的典型 C++ 实现是否存在缺陷?

我需要在C++中实现工厂类,但是当我思考这个问题时,我发现了一个我无法解决的大问题,我发现周围所有的工厂实现示例都存在相同的缺陷方法。可能是我错了,但请告诉我原因。所以这是简单的“典型”工厂实现,它允许我在不更改工厂类的情况下注册新对象。//fruit.hclassFruit{protected:intcount;public:Fruit(intcount):count(count){}virtualvoidshow()=0;};//factory.h/**singletonfactory*/classFactory{typedefFruit*(*FruitCreateFunction

c++ - 使用 const 键类型引用调用 std::set of pointers 的 count 方法

我有一个类structS{boolfoo(constAType&v)const{returnvalues.count(&v);//compileerrorduetotheconstnessofv}private:std::setvalues;};这是一个简化版本。在实际代码中,foo做了一些复杂的事情。代码产生错误invalidconversionfrom‘constAType*’to‘std::set::key_type{akaAType*}’我认为foo应该采用'constAType&v'因为它不会改变v。成员变量“values”的类型不能为std::set,因为结构S的某些方法调

c++ - 为什么信号量的条件/互斥实现在其 "while"函数中需要一个 "wait()"循环?

我一直在仔细研究以下SO问题的公认答案:C++0xhasnosemaphores?Howtosynchronizethreads?在那个答案的信号量实现中,这里是wait()函数的实现:voidwait(){boost::mutex::scoped_locklock(mutex_);while(!count_)condition_.wait(lock);--count_;}我试图理解while(!count_)条件的目的。另一个SO问题(Howdoesthisimplementationofsemaphorework?)的答案表明,当在条件变量上调用notify_one()时,多个线程

c++ - valarray 上 STL 算法 "count"的返回类型是什么

我正在使用VisualStudio2010Pro在Windows764bit上机器,我想使用count(来自header)在valarray上:intmain(){valarrayv(false,10);for(inti(0);i上面程序的输出是正确的:4但是我想将值分配给变量并使用int导致编译器警告精度损失。自valarray没有迭代器,我不知道如何使用iterartor::difference_type.这有可能吗? 最佳答案 Num的正确类型会是:typenameiterator_traits::difference_typ

c++ - 如何监控 Qt Signal 事件队列深度

我的程序中有两个对象。一个物体正在发出信号。另一个在槽中接收信号,并一个接一个地处理传入的信号。这两个对象都在不同的线程中运行。现在我需要测量和监控接收对象的工作量。问题是我不知道在Qt信号队列中有多少信号在等待我的第二个对象处理。有没有办法获得这个队列的大小?或者是否有解决方法来了解仍有多少信号需要处理? 最佳答案 qGlobalPostedEventsCount()是一个起点,尽管它只适用于当前线程。要轮询任意线程,我们可以使用Qt的内部机制。那么实现就非常简单了。即使线程被阻塞并且不处理事件,它也能正常工作。//https:/

c++ - 如何将数组的内容写入文本文件?

如何将数组的内容写入文本文件?可能吗?下面是我的代码:x=0;y=0;//copytorealarrayif(nRow==0){for(i=nTCol;i>=0;i--){nPanelMap[nRow][x]=nTempMap[i];x++;}}if(nRow==1){for(i=nTCol;i>=0;i--){nPanelMap[nRow][y]=nTempMap[i];y++;}}k=0;for(i=nTCol;i>=0;i--){array[k]=nPanelMap[nRow][x];k++;array[k]=nPanelMap[nRow][y];k++;}j=0;for(i=n

python - 在这种情况下,为什么 Python 比 C++ 快?

下面给出了一个用Python和C++编写的程序,它执行以下任务:从stdin读取空格分隔的单词,将按字符串长度排序的唯一单词连同每个唯一单词的计数打印到stdout。一行输出的格式为:长度、计数、单词。例如,使用这个输入文件(同义词库的488kB)http://pastebin.com/raw.php?i=NeUBQ22T带格式的输出是这样的:157"11n11)13*118,17-11R113.12111S15211312412&191%115116117118129116;12=15A11C15e13E11G111I11L14N1681a12y11P216721y;21P-285n

c++ - 如何在 C++ 中计算不同的数字基数?

我15岁的弟弟正在开始编程,他编写了一个简洁的小程序,可以输出六位或更少的字母和数字的所有组合。他的代码是一个六重嵌套的for循环,用于更新六级char数组的元素。它看起来很糟糕,但肯定很快!我向他展示了如何进行简单计数,并将这些数字转换为基数36。最大的问题是我的代码比他的慢得多,因为我在做除法。有没有一种方法可以简单地假定基数为36并输出从1到36^6的计数?理想情况下,我希望做类似的事情[base36]for(inti=0;i 最佳答案 试试这个:charbuffer[1024];for(inti=0;i这里是没有itoa的(