草庐IT

dynamic_zip_iterator

全部标签

c++ - 如何使用 7z SDK 提取 rar/zip 文件 (C++)?

我正在尝试编写一个小型的跨平台漫画书阅读器(Qt/C++)。我不在乎外面已经有什么,我知道有一些。我的问题是我需要阅读漫画书格式,它们被重命名为rar和zip文件。文档非常……不存在?任何地方都没有“helloarchive”文档。我该如何设置?如果它能让我更容易地假设我使用的是任何特定的操作系统,那就这样做吧。为了开发工作,我经常在Kubuntu、OSX和Win7之间切换。 最佳答案 我一直在为7zipSDK开发一个简单的C++包装器,您可以找到它here.它目前仅支持Windows和我的特定需求,但我很乐意进行一些更改和/或接受

c++ - move_iterator 对于返回纯右值的迭代器被破坏并返回悬空引用

我查看了std::move_iterator的STL源代码并发现它返回Iterator::value_type&&.当Iterator::reference时,这会导致不正确的行为是右值,与Iterator::value_type&不同.我有一个带有代理对象的类reference(如std::vector),它可以隐式转换为value_type.普通迭代器只是取消对这个代理的引用(输入迭代器要求允许这样做),但是std::move_iterator调用转换为value_type带有开销,然后返回对创建的临时对象的悬空引用。std::move_iterator仍然适用于std::vect

c++ - 有 "dynamic decltype"吗?

这个问题与decltype和多重继承有关。假设我有以下内容:一个带有一些虚拟方法的抽象类A,一些派生类使用以前的虚拟方法实现方法(这些类中的每一个都是一种用例),一个最终的具体类,它继承了先前用例的子集并实现了纯虚拟方法。例如:#include/***"Iterablecontainer"*/templatestructA{virtualT*data()=0;virtualconstT*data()const=0;virtualunsignedsize()const=0;T*begin(){returndata();}T*end(){returndata()+size();}const

c++ - 如何使用 dynamic_cast 正确向下转换?

我对dynamic_cast很困惑.来自C++Primer和cppreference的Material(规则5)不能帮助我理解。(cppreference比书难得多,我都非常仔细地阅读了它们)来自C++Primer5th:dynamic_cast(e)Inallcases,thetypeofemustbeeitheraclasstypethatispubliclyderivedfromthetargettype,apublicbaseclassofthetargettype,orthesameasthetargettype.Ifehasoneofthesetypes,thentheca

c++ - m.find(...) == m.end() - 使用的是 iterator 或 const_iterator

std::mapfind/end都提供const_iterator和迭代器,例如iteratorend();const_iteratorend()const出于好奇,如果我有一个std::map,它将在这里被调用/比较,一个迭代器或一个const_iterator?:if(m.find(key)!=m.end()){...}我应该关心吗? 最佳答案 如果m是const,则返回一个const_iterator;否则将返回一个迭代器。如果您所做的只是测试map中是否存在某个元素,那么使用哪个元素并不重要。

c++ - dynamic_cast 通常是如何实现的?

类型检查仅仅是整数比较吗?或者有一个GetTypeId虚拟函数来区分哪个使其成为整数比较有意义吗?(只是不想让事情成为类名上的字符串比较)编辑:我的意思是,如果我经常期待错误的类型,使用类似的东西是否有意义:structToken{enum{AND,OR,IF};virtualstd::size_tGetTokenId()=0;};structAndToken:publicToken{std::size_tGetTokenId(){returnAND;}};并使用GetTokenId成员而不是依赖于dynamic_cast。 最佳答案

c++ - iterator 和 const_iterator (STL) 效率不同

在Qt中有类似的类来列出map。这些类提供了一个返回const_iterator的begin_const()方法。文档说应尽可能使用这些const_iterators,因为它们速度更快。如果实例本身是const,STL只会给你一个const_iterator。只实现了一个begin()方法(为const重载)。使用iterator和const_iterator读取访问元素时有什么区别吗?(我不知道为什么它们在Qt中有区别) 最佳答案 Thedocumentationsaysthattheseconst_iteratorsshould

c++ - 在 C++ 中创建 boost dynamic_bitset 的 vector

我想创建一个动态位集数组。所以我创建了一个dynamic_bitsetvector,vector>v;如何指定每个动态位集的大小,即v[0]、v[1]等?与一般情况一样,我们通过构造函数指定大小。boost::dynamic_bitsetx(3); 最佳答案 这一行vector>v;创建一个空vector。相反,您可以要求它填充所有具有相同值的默认条目,所以就像通常那样vectorv(N,1);用N创建一个vector条目所有1你可以做vector>v(N,boost::dynamic_bitset(3));让它包含Nboost::

c++ - dynamic_cast 中的类型必须是指向完整类类型的指针或引用,或者 void *

我希望有人能理解为什么下面的代码会失败。我正在尝试从osg::Node*节点对象获取PositionAttitudeTransform(Openscenegraph类)的实例。但是下面是粗体的编译器错误。voidCameraPosCallbackUpdate::operator()(osg::Node*node,osg::NodeVisitor*nv){//othercodegoeshereosg::PositionAttitudeTransform*pat=dynamic_cast(node);}IntelliSense:dynamic_cast中的类型必须是指针或对完整类类型的引用

c++ - 使用 dynamic_cast 而不是传统的多态有什么优势?

我们可以使用多态(继承+虚函数)来泛化不同的类型在一个共同的基类型下,然后引用不同的对象,就好像它们是相同的类型一样。使用dynamic_cast似乎是完全相反的方法,因为本质上我们在决定要采取什么操作之前检查对象的特定类型。是否有任何已知的例子说明某些东西不能像使用dynamic_cast那样容易地使用传统多态性来实现? 最佳答案 每当您发现自己想要基类中的成员函数(如“IsConcreteX”)时(编辑:或者更准确地说,是像“ConcreteX*GetConcreteX”这样的函数),您基本上是在实现自己的dynamic_cas