python文档经常提到“容器”。 例如 : 如果check_circular是False(默认值:True),那么容器types的循环引用检查将被跳过,循环引用将导致OverflowError(或更糟糕)。 但我找不到任何官方的容器定义,既不是他们的名单。 编辑 对于Python 2.7.3: 检查了容器内置的types: ( isinstance(object, collections.Container)返回True ) 容器中定义了__contains__方法: 所有内置序列types:列表,字节码,string,Unicodestring和元组。 字典 所有内置的集合types:集合和frozensets 没有定义__contains__方法的容器: xrange对象 检查不是容器的内置types: ( isinstance(object, collections.Container)返回False ): Int对象 浮动对象 长物体 布尔对象 模块对象 文件对象 缓冲对象 无对象 告诉我你已经检查了哪些其他的内buildtypesisinstance(object, collections.Container) ,我将它们添加到列表中。
我对Java EE / EJB相对来说比较陌生,对于Java EE容器我一直在阅读很多。 我有使用Web容器(jboss中的WAR文件)的经验。 我也知道Jboss也可以用作Java EE容器。 我的问题是,Java EE容器对Web容器有什么区别? 我知道Java EE也能够包含一个.war文件。 他们是不同的,他们有什么不同? 有什么偏好供应商具体明智哪个更好?
我的应用程序中有以下结构: <div id="container"> <div id="child_container"> <div class="child"></div> <div class="child"></div> … <div class="child"></div> </div> </div> 每个子div都有一个已知的固定宽度,但应用程序允许更多的插入到child_container div中。 我想要做的是让容器div在需要时水平扩展,给定子容器的总宽度。 这是目前发生的事情: +—— container ——-+ +— child_container —-+ | child1 child2 child3 | | child4 | +————————+ 如果我将child_container div的宽度设置为一个固定值,我可以通过容器div水平扩展,尽pipe有点丑陋, +—— container ——-+ +—— child_container -+—-+ | child1 child2 child3 child4 | +————————+—-+ 但是,这需要在添加新的孩子时重新计算。 有没有办法做到这一点,而不是使用固定宽度的子容器,最终的结果是这样的 +——— container ———+ +—— child_container […]
毫无疑问,我会select在大多数C ++编程项目中使用STL。 最近有人问我这个问题:“有没有什么情况下你不会使用STL?” 我越想到,我意识到也许应该是我select不使用STL的情况…例如,一个非常大的,长期的项目,其代码库预计将持续数年……也许自定义的容器解决scheme,恰好符合项目需求是值得的初始开销? 你怎么看,有什么情况下你会select不STL?
这是棘手的字,但我有一个视图控制器(vc1),其中包含一个容器视图(我正在使用故事板)。 在该容器视图内是一个导航控制器和一个根视图控制器(vc2)。 从vc2中,我怎样才能访问vc1? 或者,我如何将vc1传递给vc2? (请记住,我正在使用故事板)。
我有一些类的库,使用我的数据,正在被读入缓冲区。 是否有可能以某种方式避免一次又一次地复制数组,将越来越多的数据传递给处理方法? 好吧,这听起来很奇怪,但在我个人的情况下,还有一个特殊的作者,它将数据分成块并将它们分别写入不同的位置,所以它只是执行System.arraycopy,获取需要的内容并调用底层的作者,子arrays。 这发生了很多次。 什么是重构这种代码的最佳方法?
我决定在一个更大的项目上使用IoC原则。 不过,我想弄清楚一直困扰着我的东西。 我得出的结论是,一个IoC容器是一个架构模式,而不是一个devise模式。 换句话说,没有一个类应该知道它的存在,并且应用程序层使用容器本身来拼接所有组件。 本质上,它是一个select,在一个devise良好的面向对象模型之上。 话虽如此,如何在不将IoC容器遍布整个地方的情况下(无论是否抽象)访问已parsing的types呢? 我在这里看到的唯一select是利用使用IoC容器来parsing具体types的抽象工厂。 这应该很简单,可以换出一套标准的工厂。 这是一个好方法吗? 有没有人在这里使用它,它对你有多好? 还有其他的东西吗? 谢谢!
对于我正在使用的任何STL容器,如果使用迭代器的默认构造函数声明迭代器(此特定容器types的),迭代器将被初始化为什么? 例如,我有: std::list<void*> address_list; std::list<void*>::iterator iter; 什么将被初始化?
我有一个全球范围内的myObjectsvector。 我有一个方法,使用std::vector<myObject>::const_iterator来遍历向量,并做一些比较来find一个特定的元素。 一旦我find了所需的元素,我想能够返回一个指针(vector存在于全局范围内)。 如果我返回&iterator ,我是否返回迭代器的地址或迭代器指向的地址? 我是否需要将const_iterator回myObject,然后返回该地址?
当创build一个自定义的容器类,按照通常的规则(即与STLalgorithm一起工作,使用行为良好的通用代码等)工作时,在C ++ 03中,实现迭代器支持和成员开始/结束函数就足够了。 C ++ 11引入了两个新的概念 – 基于范围的循环和std :: begin / end。 基于范围的for循环理解成员开始/结束函数,所以任何C ++ 03容器都支持基于范围的开箱即用。 对于algorithm推荐的方法(根据Herb Sutter编写的“现代C ++代码”)是使用std :: begin代替成员函数。 然而,在这一点上,我不得不问 – 推荐的方法来调用一个完全合格的begin()函数(即std :: begin(c))或依赖于ADL并调用begin(c)? ADL在这种情况下似乎没用 – 因为如果可能,std :: begin(c)委托给c.begin(),通常的ADL好处似乎不适用。 如果每个人都开始依赖ADL,所有的定制容器都必须在必需的名称空间中实现额外的begin()/ end()自由函数。 然而,有几个消息来源似乎暗示了不合格的开始/结束呼叫是推荐的方式(即https://svn.boost.org/trac/boost/ticket/6357 )。 那么什么是C ++ 11的方式? 容器库作者应该为他们的类编写额外的开始/结束函数,以便在不使用名称空间std的情况下支持非限定的开始/结束调用; 或使用std :: begin;?