草庐IT

shared_int

全部标签

c++ - 'implicit sharing' 是否可从 Qt 类继承?

如果我创建一个隐式共享的Qt类(例如QList)的子类,我的子类也会被隐式共享吗?我读了briefintroductiontoimplicitsharing位于QtCore5.3文档中,但我没有看到任何关于遗传性的提及。我提问的目的是在决定传递哪些参数以及如何传递它们时尝试编写更高效的代码。 最佳答案 如评论中所述,使用隐式共享的Qt类通常是数据容器或工具,不打算被子类化。您会注意到,因为没有虚析构函数,实际上根本就没有虚函数。由于风险和不良做法,您可能希望在没有继承的情况下进行不同的设计。回答你的问题:隐式共享如何运作?类实例共享

Java中是否有一种干净的方式将int数组的一部分作为字符串输出?

给定一系列int和索引k。任务是输出左移k的数组。例如...a=[1,2,3,4,5],k=4Output:51234在JavaScript中,代码是:varresult=a.slice(d).join('')+''+a.slice(0,d).join('')我真的很努力地在Java找到一个简洁的同等用品。看答案正如您所说,您只需要输出,这将起作用:int[]a=newint[]{1,2,3,4,5};intk=4;for(inti=0;i

c++ - Opencv,对 `cv::imread(??cv::String const&???, int)' 的 undefined reference

这个问题在这里已经有了答案:error:undefinedreferenceto`cv::imread(std::stringconst&,int)'(4个答案)Whatisanundefinedreference/unresolvedexternalsymbolerrorandhowdoIfixit?(38个答案)关闭5年前。我在QT+Opencv中有一个项目,代码可以正常工作,但我必须格式化窗口,现在我试图再次导入该项目,但出现了这个错误。对`cv::imread(cv::Stringconst&,int)'的undefinedreference在这一行中:mat=cv::imre

Python + setuptools : distributing a pre-compiled shared library with boost. python 绑定(bind)

我有一个C++库(我们在下文中将其称为示例),我使用boost.python库为其编写了Python绑定(bind)。这个Python包装的库将称为pyExample。整个项目是使用CMake构建的,生成的Python包装库是一个名为libpyExample.so的文件。当我使用与libpyExample.so位于同一目录中的Python脚本中的Python绑定(bind)时,我只需编写:importlibpyExamplelibpyExample.hello_world()这会执行包装过程公开的hello_world()函数。我想做什么为了方便起见,我希望我的pyExample库可以

c++ - 从 enable_shared_from_this 返回 self 的 shared_ptr 继承的类的子类

我想知道是否有像这样的伪代码来做一些事情:classA:publicstd::enable_shared_from_this{public:std::shared_ptrgetPtr(){returnstd::static_pointer_cast(shared_from_this());}};classB:publicA{std::vectorcontainer;std::shared_ptraddChild(Achild){container.push_back(child);returngetPtr();}};classC:publicB{public:std::shared_p

c++ - 一个 std::shared_ptr<> 的 std::tuple<> 不起作用?

我最近发现使用std::tuple有问题只有一个元素。我创建了一个用于类型删除并保留N个引用计数对象的类。但是,如果引用计数对象是std::tuple中唯一的一个,则不会保留它。.我做错了什么吗?classtoken{public:templatetoken(Types...types):_self(std::make_shared>(std::make_tuple(std::move(types)...))){}//WhydoIneedthisspecialversionoftheconstructor?//Uncommentandthecodewillwork!//template

C++。为什么 std::cout << char + int 打印 int 值?

比方说,我们有:charx='a';inty=1;所以,如果你运行:std::cout它打印98而不是'b'。正如我从here看到的那样只有int参数实现。从现在开始我有两个问题:char+int操作后返回什么类型?为什么没有char参数实现,而是std::cout仍然按预期工作并打印char值? 最佳答案 感谢Fefux,BoPersson和MattiVirkkunen答案是:来自CPPReference:Implicitconversions:arithmeticoperatorsdonotaccepttypessmallert

c++ - 在编译时解析 (u)int_fastX_t

C++标准typedef的实现将(u)int_fastX类型定义为其内置类型之一。这需要研究哪种类型最快,但不可能对每种情况都有一种最快的类型。在编译时解析此类类型以通过为实际使用选择最佳类型来解决这种情况是否会提高性能?编译器会分析_fast变量的使用,然后选择最佳类型。发挥作用的因素可能是对齐方式和变量使用的操作类型。这将有效地使这些类型成为一种语言特性。当编译器突然决定为这样的变量选择另一个宽度时,这可能会引入错误。但是在这种用例中不应该使用_fast类型,无论如何,行为取决于宽度。标准允许这样的编译时解析吗?如果是,为什么到今天还没有实现?如果不是,为什么不在标准中?

c++ - std::shared_ptr<std::string const> 能否作为引用计数不可变字符串的有效实现?

理想情况下,不可变字符串类只需要为每个字符串分配一个内存。甚至引用计数也可以存储在与字符串本身相同的内存块中。string的简单实现和shared_ptr将为shared_ptr分配三block不同的内存:字符串缓冲区的内存字符串对象的内存引用计数的内存现在,我知道在使用std::make_shared()时,智能实现可以将最后两个组合成一个分配。但这仍然会留下两个分配。当您知道字符串是不可变的时,字符串缓冲区将不会被重新分配,因此应该可以将它与字符串对象集成在一起,只留下一次分配。我知道一些字符串实现已经对短字符串使用了这样的优化,但我正在寻找一个不管字符串长度如何都这样做的实现。我

c++ - 什么时候 std::shared_timed_mutex 比 std::mutex 慢,什么时候(不)使用它?

我正在尝试使用this在C++中实现多线程LRU缓存文章作为提示或灵感。它适用于Go,但所需的概念或多或少也存在于C++中。本文建议在散列表和链表周围使用带有共享互斥锁的细粒度锁定。所以我打算用std::unordered_map写一个缓存,std::list并使用std::shared_timed_mutex锁定.我的用例包括几个线程(4-8)使用此缓存作为拼写错误的单词和相应可能的更正的存储。缓存的大小约为10000-100000个项目。但是我在几个地方读到,使用共享互斥锁而不是普通互斥锁几乎没有意义,而且速度更慢,尽管我找不到一些带有数字的真实基准或至少在何时使用和何时不使用的模