草庐IT

vector_X

全部标签

c++ - 创建局部结构的 std::vector 时出错

#includeintmain(){structst{inta;};std::vectorv;for(std::vector::size_typei=0;i以上代码在使用GNUg++编译器编译时会出现以下错误。test.cpp:Infunction‘intmain()’:test.cpp:6:19:error:templateargumentfor‘templateclassstd::allocator’useslocaltype‘main()::st’test.cpp:6:19:error:tryingtoinstantiate‘templateclassstd::allocator

c++ - std::vector:连续数据和复制/移动

我对下面的代码有两个问题:1)faces的元素是否是连续的?2)std::vector插入时是否复制或移动Facef?#includeintmain(){structFace{};std::vectorfaces;for(inti=0;i 最佳答案 根据标准§23.3.6.1类模板vector概述[vector.overview]:Theelementsofavectorarestoredcontiguously,meaningthatifvisavectorwhereTissometypeotherthanbool,thenito

c++ - 为什么 gcc 生成一个 memmove 而不是 memcpy 来复制 std::vector<>?

在gcc5.3中,以下示例中的两个函数都会生成对memmove的调用。生成memcpy会不会不合适?#includeintblackhole(conststd::vector&);intcopy_vec1(conststd::vector&v1){conststd::vectorv2{v1.begin(),v1.end()};returnblackhole(v2);}intcopy_vec2(conststd::vector&v1){constautov2=v1;returnblackhole(v2);}Exampleongodbolt. 最佳答案

c++ - 将子 vector 合并/展平为单个 vector c++(将 2d 转换为 1d)

这个问题在这里已经有了答案:Genericfunctiontoflattenacontainerofcontainers(2个答案)关闭9年前。我有vector>Y.我想将Y内的子vector(称为y)合并为一个vector.但我不想对它们进行排序,即按它们出现的顺序合并它们。我将如何有效地做到这一点,也许通过使用STL算法?std::merge方法通过我不想要的排序合并。编辑:我想要的是:给定{{1,6,5},{5,3-1,77},{0},...}返回{1,6,5,5,3,-1,77,0,...

angular - 从函数返回 vector 作为自动

是否可以将std::vector返回为auto?例如:autoretVec(){std::vectorvec_l;l.push_back(1);l.push_back(2);returnvec_l;}...autoret_vec=retVec();for(auto&it:ret_vec){}当我写这样的东西时,我得到一个错误:错误:在扣除auto之前使用autoretVec()--->autoret_vec=retVec(**)**;错误:无法从ret_vec推断出auto&&--->for(autoit:**ret_vec**){我该如何写这个?更新:对不起。我在类里面使用这个ret

c++ - 调整 STL vector 的大小是否会删除/使其以前的内容无效?

(示例程序)似乎没有,但我可以确定吗?//doesresizinganSTLvectorerase/invalidateit'spreviouscontents?#include#includeusingnamespacestd;voidprint(vector&t){for(inti=0;it;t.resize(12,9999);print(t);t.resize(15,10000);print(t);} 最佳答案 调整STLvector的大小可能需要重新分配底层存储。这可能会导致任意数量的元素被销毁和重新创建,并且所有迭代器都失

C++ STL vector : Push_back taking reference

从std::vector的cpp文档中,我看到了这一点:voidpush_back(constT&x);我知道push_back复制了我传递的对象。但是,为什么签名是constT&?通过查看这个,我最初认为它需要一个const引用我推送到vector. 最佳答案 另一种选择是voidpush_back(Tx);即按值取x。但是,这将(在C++03中)导致创建x的额外拷贝(push_back的参数中的拷贝)。通过const引用获取x可以避免这种情况。让我们看一下调用v.push_back(T())的堆栈:v.push_back(T()

c++ - 为什么 "std::vector<bool>"的大小是 16 Byte?

我正在使用memcpy将std:vectors的内容复制到原始数组。对于int、float、double等数据类型,它运行良好。当我开始复制boolvector时,我遇到了一个问题,即我得到了奇怪的值。首先,我开始为浮点vector制作测试输出:std::vectortest1(3,0);cout输出是:Sizeoftest1[0]:4Memoryaddress0:02793820Memoryaddress1:02793824Memoryaddress2:02793828这就是我所期望的。浮点大小为4字节,到下一个浮点值的距离为4字节。当我为bool执行此操作时,输出如下所示:std:

c++ - 使用 Eigen C++ 库将每个矩阵列乘以每个 vector 元素

我需要使用EigenC++library将每个矩阵列乘以每个vector元素.我尝试了colwise没有成功。示例数据:Eigen::Matrix3XfA(3,2);//3x2A矩阵A可以有3xN和VNx1。含义(列x行)。 最佳答案 这是我会做的:代码Eigen::Matrix3XfA(3,2);//3x2A示例输出:1244915说明你很接近,诀窍是使用.array()进行广播乘法。colwiseReturnType没有.array()方法,因此我们必须在A的数组View上进行colwise恶作剧。如果你想计算两个vector的

c++ - 初始化 vector<doubles> c++ 的 vector

您好,我想初始化一个大小为9的vector,其元素是大小为5的vector。我想将所有元素初始化为零vector。这种方式正确吗?vectorz(5,0);vector>diff(9,z);或者有更短的方法吗? 最佳答案 您可以在一行中完成此操作:vector>diff(9,vector(5));您可能还想考虑使用boost::multi_array为了更有效的存储和访问(它避免了双指针间接)。 关于c++-初始化vectorc++的vector,我们在StackOverflow上找到一