草庐IT

EidosValue_Int_vector

全部标签

c++ - int* 的默认值是 NULL 吗?

我写了如下源#includeusingnamespacestd;templateclassAAA{public:voidf(){couta;AAAb;a.f();///inthiscase,T()==NULL??b.f();return0;}控制台打印为000000000。(在visualstudio2010中)如果T是int*,T()==NULL?它总是正确的吗? 最佳答案 这称为值初始化,您保证0。另外,你不需要这么复杂的例子来演示:typedefint*T;intmain(){Tx=T();std::cout

c++ - 为什么在初始化和调整对象 vector 大小时调用析构函数?

我的程序中发生了一些事情,我无法确定它是否应该发生。如果是,我不明白为什么..代码如下:#include#includeusingnamespacestd;classA{public:A();~A();};A::A(){cout>vec;vec.resize(5);for(inti=0;i这是输出:creatingdeletingcreatingdeletingcreatingdeletingcreatingdeletingcreatingdeletingENDdeletingdeleting[..moredeletinghere]我理解为什么在“END”消息之后调用析构函数,但之前我

c++ - 完全删除 std::map<int, string> 的内存

我有一张填满的map,现在我想彻底删除内存。我该怎么做?找不到与此主题相关的任何内容,抱歉,如果已经有人回答...我的代码是这样的:for(std::map::iteratorii=map.begin();ii!=map.end();++ii){deleteⅈ}但它不起作用。有人可以帮忙吗?问候,菲尔 最佳答案 正确的做法是不去做。当map被自动分配的任何资源销毁时,它会自动释放资源。除非您使用new分配值,否则您不会删除它们。{std::mapx;x[0]="str";}//noleakshere{std::mapx;x[0

c++ - 将 std::vector 重命名为另一个类以进行重载?

看看这段代码。#includetemplateusingother_vector=std::vector;templatevoidf(std::vector&){}templatevoidf(other_vector&){}intmain(){other_vectorb;f(b);return0;}它不编译,因为f正在重新申报。我完全理解这个错误。但是,我需要一个行为类似于std::vector的第二类,但将被视为不同的类型,因此如上例所示的重载将是合法的。我能做什么?让新类(class)有std::vector作为基类。这可能有效,但不应从标准容器继承。让新类有一个std::vect

c++ - 初始化 bool 的内联 vector

我正在使用这个例子来初始化boolvector:#include#include#includeusingnamespacestd;intmain(){map>myMap;vectorone{true,true,false};myMap[2]=one;cout我在此代码中所做的唯一更改是使用std::vector而不是vector,我现在拥有:std::map>m_links;std::vectorm_allFalse{false,false,false,false,false};它告诉我在m_allFalse之后使用;。我怎样才能摆脱这个错误?我使用的是intel编译器14,但没有c

c++ - 使用条件迭代器插入到 vector 中

假设我有一个包含各种条目的vector,我想将其插入到另一个vector中,同时忽略满足条件的条目。例如,我想插入一个vector,同时忽略所有三个vector。{1,3,2,3,4,5,3}->{/*previouscontent,*/1,2,4,5}到目前为止,我使用的是std::partition,它不保留相对顺序并重新排列源vector。std::vectorsource({1,3,2,3,4,5,3});std::vectortarget;autopartition=std::partition(std::begin(source),std::end(source),[](c

c++ - 在 C++ 中,如何获取迭代器的 int 索引?

我需要计算并返回迭代器指向的双端队列元素的索引。如何从迭代器中获取int? 最佳答案 您可以使用:std::ptrdiff_tindex(std::distance(my_container.begin(),my_iterator));请注意此类例程的运行时成本,但这取决于您使用的数据结构。 关于c++-在C++中,如何获取迭代器的int索引?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/ques

c++ - 使用 next_permutation 置换类 vector

是否可以使用std::next_permutation()来置换我创建的类的vector的元素?next_permutation()中的比较参数是如何工作的? 最佳答案 Isitpossibletousestd::next_permutation()topermutatetheelementsofavectorofaclassicreated?是的!试试这个#include#include#includeintmain(){typedefstd::vectorV;//Vv;for(inti=1;iHowdoesthecomparis

C++: vector 的 vector

我需要创建一个vector的vector(准确地说是3个vector的vector)。每个组成vector具有不同的数据类型(字符串、double、用户定义的数据类型)。这在C++中可能吗?如果没有,是否有任何其他优雅的方式来实现我的要求? 最佳答案 如果您知道其中的三个,并且知道它们的类型,为什么不直接编写一个类呢?classData{std::vector_strings;std::vector_doubles;std::vector_userDefined;public://...};这也会提供一些强大的语义(在我看来,不相关

c++ - 使用 vector 类实现堆栈的链表与动态数组

我正在阅读实现堆栈的两种不同方法:链表和动态数组。链表相对于动态数组的主要优点是链表不必调整大小,而如果插入的元素过多,则必须调整动态数组的大小,从而浪费大量时间和内存。这让我想知道这是否适用于C++(因为有一个vector类,它会在插入新元素时自动调整大小)? 最佳答案 很难比较两者,因为它们的内存使用模式完全不同。vector调整大小vector根据需要动态调整自身大小。它通过分配一个新的内存块,将数据从旧块移动(或复制)到新块,释放旧块来实现。在典型的情况下,新块的大小是旧块的1.5倍(与流行的看法相反,2倍在实践中似乎很不寻