草庐IT

EidosValue_Int_vector

全部标签

C++ - 是否可以在不指定类型的情况下实例化 `vector`?

非常基础,但对我来说很难在Google中搜索到。我在网上做一个C++培训类(class),主题是STL;在这种情况下vector.是否可以实例化一个vector不指定类型?#include#includeusingnamespacestd;intmain(){vectorv1(10,0);cout我认为这是错误的,但我在整个类(class)中都看到了这一点,这让我感到困惑。当使用vectorv1(10,0)然后它编译,这就是我认为应该的方式。在类(class)中我们使用的是NetBeans,但我认为没有配置或参数或任何可以实现这一点的东西,是吗? 最佳答案

c++ - 按模式分割 vector

我有一个vector“a”,其中包含大量数据,应该分成两个单独的vector“b”和“c”。vectora;//containsalotofdatavectorb;//datashouldbesplitintobandcvectorc;vector'a'中的数据布局如下:bbbbccccbbbbccccbbbbcccc前4个字节应放入vector“b”,接下来的4个字节应放入vector“c”,依此类推。我可以遍历我的数据并将每个元素push_back(或插入)到相应的vector中(基于它们在vector“a”中的索引)。但是,我试过了,结果很慢。在C++中是否有更高效的方法来实现这

c++ - 将 vector 分配给单个元素

考虑std::vector对于某些类型T.我收到一个指向这种类型的函数的指针,还有一个T的实例。;t说。我的函数如下所示:voidbar(std::vector*foo,constT&t){foo->clear();foo->push_back(t);}有没有办法在一条语句中编写函数体?*foo=t;由于不存在适当的赋值运算符而不起作用。我也在考虑使用foo->assign(&t,&t+1);但这看起来很调皮。我正在使用C++11。 最佳答案 当然,您可以重新分配:*foo={t}; 关

c++ - C++ 中 vector 的 .size() 到底做了什么?

换句话说,.size()是在调用时计算vector对象的每个元素并返回此值,还是vector对象有一个(size_t?)成员保存vector中当前元素的数量,并且该成员的值由.size()返回? 最佳答案 对std::vector::size的调用究竟做什么取决于标准库的特定实现。但是,该标准对它能做什么和不能做什么设置了一些约束。特别是,它需要调用size才能在恒定时间内执行,这意味着它无法对元素进行计数(这与容器大小成线性关系,而不是常数)。一个vector的实现需要一个指向vector开头的指针,然后是另外两条信息:vecto

c++ 复制构造函数与 std::vector 的移动构造函数

我有一个包含std::vector的类structMystruct{Mystruct(conststd::vector&w):v(w){std::cout&&w):v(w){std::coutv;};然后我创建像这样的对象intmain(){autox=std::vector{1,2,3};MystructM1(x);MystructM2(std::vector{3,2,1});return0;}M1是使用复制构造函数构造的,M2使用“移动”构造函数构造的,但是在gdb中运行时,两个赋值都为v和w保留不同的地址,同样的情况发生如果我在第二个构造函数的初始化列表中使用v(std::mov

c++ - 我可以在一行代码中将符合条件的 vector 的所有元素插入到集合中吗

我有一个元素vector。我想使用该vector中符合特定条件的元素来填充一个集合。我可以用一行或比下面更简洁的任何方式来做到这一点吗?//givenvectorvsets;for(constint&i:v){if(/*someconditiononi*/)s.insert(i);}例如,类似以下内容://givenvectorvsets;s.insert(v.filter(/*lambdahere*/));不言而喻,出于性能原因,v.filter方法应该返回一个迭代器,而不是一个单独的填充vector。 最佳答案 您可以使用std

c++ - 聪明地处理 vector 内存分配

假设我必须迭代一个可能非常大的数字vector,并将偶数和奇数元素复制到新的、单独的vector中。(源vector的偶数与奇数的比例可以是任意的;它可以是全偶数、全奇数或介于两者之间。)为简单起见,push_back通常用于此类事情:for(std::size_tIndex;Index但是,我担心如果将其用作排序算法等性能至关重要的实现的一部分,这将是低效且有害的。例如,快速排序涉及像这样分离元素。您可以使用reserve()预先分配内存,因此只需要一次分配,但随后您必须遍历整个源vector两次-一次计算需要多少元素进行整理,并再次进行实际复制。当然,您可以分配与源vector大小

c++ - 为什么我会从这个 unsigned int 中得到段错误?

我正在尝试初始化一个整数数组并将所有元素设置为1。我需要该数组的上限为4294967295,或者32位unsignedint可能的最大数.这对我来说似乎是一项微不足道的任务,但我遇到了segfault。我可以空运行for循环,它似乎工作正常(虽然速度很慢,但它正在处理近43亿个数字,所以我不会提示)。当我尝试在循环中执行任何类型的操作时,问题似乎就出现了。我在下面的指令-primeArray[i]=1;-导致segfault错误。据我所知,这不应该导致我超出阵列。如果我注释掉该行,则不会出现segfault。已经很晚了,我疲倦的眼睛可能只是遗漏了一些简单的东西,但我可以再用一双。这是我

c++ - 在 C++ 中使用 vector 设置并集算法

在这个问题中我只使用了std::vector,我可以保证每个vector中没有重复项(但每个vector中没有任何顺序)。如何合并我拥有的vector?例子:如果我有以下vector...11325542442合并后我应该只剩下两个vector:12345同样,我只使用vector,std::set是不允许的。 最佳答案 您可以使用std::set_union算法。intfirst[]={5,10,15,20,25};intsecond[]={50,40,30,20,10};std::vectorv(10);//0000000000

c++ - size_t 是否总是 unsigned int

这个问题在这里已经有了答案:Differencebetweensize_tandunsignedint?(7个答案)关闭7年前。是否有任何实现将size_t定义为unsignedint以外的东西?在我工作的每个系统下,它都被定义为unsignedint,所以我很好奇。