草庐IT

vector_c

全部标签

c++ - 对定义为 vector<double> 的矩阵进行排序

假设我有一个方阵A尺寸n,定义为std::vector.std::vectorA(n*n);矩阵的元素以通常的方式访问:doublea_ij=A[i*n+j];我需要根据第一列对矩阵的行进行升序排序。qsort函数允许我使用数组和函数指针来完成它,但我想找到一种方法来使用vector和std::sort来完成它.另请注意,出于性能原因,我不想将矩阵定义为vector的vector。编辑:我传给qsort的函数:staticintcomparisonFunction(constvoid*firstRow,constvoid*secondRow){if(((double*)firstRow

c++ - 使用 C++ Catch 测试浮点 std::vector

CatchC++单元测试框架是否有可能比较基于浮点类型的std::vectors?我知道我可以比较两个容器和每个元素的大小(使用Approx),但这很麻烦。整数类型vector的比较工作正常。现在,我必须使用这样的结构REQUIRE(computed.size()==expected.size());for(size_ti=0;i但我想使用一个衬里(它适用于整数类型):REQUIRE(computed==expected); 最佳答案 下面的构造由Catch2自己提供。无需自己动手。REQUIRE_THAT(computed,Cat

通用(多态)lambda 的 C++17 vector

C++14引入了通用lambda(当在lambda的签名中使用auto关键字时)。有没有办法用C++17将它们存储在vector中?我知道这个现有问题,但它不符合我的需要:CanIhaveastd::vectoroftemplatefunctionpointers?这是一个示例代码,说明了我想做什么。(回答前请看底部的注释)#include#includestructA{voiddoSomething(){printf("A::doSomething()\n");}voiddoSomethingElse(){printf("A::doSomethingElse()\n");}};str

c++ - std::vector 交换导致内存碎片?

我目前正在处理大约2.5GB内存的非常大的数据集..我目前通过使用包含的类数据的vector来存储它1)元数据2)boost::ptr_listMemoryBlock类包含1)元数据2)std::vector填充时,我保留我的std::vector以50,000人为一组。如果我的vector的空间维度变大,我将创建一个新的内存块并使用std::vector(Points).swap(Points)将vector缩小到合适的大小。现在的问题...似乎当我使用交换技巧调整数组大小时,在清除所有数据并加载新数据集后,我开始遇到std::bad_alloc异常。我可以加载的数据量急剧减少...

c++ - 查找 vector 中的连续元素

我正在解决一个问题,我必须从一个更大的vector中创建子vector。如果vector中的元素是连续的,我必须创建这些元素的vector。如果存在不连续的元素,则创建该单个元素的vector。我的逻辑如下vectorvect;for(intnCount=0;nCount::iteratoritEnd;itEnd=std::adjacent_find(vect.begin(),vect.end(),NotConsecutive());仿函数NotConsecutive如下return(intfirst!=intsecond-1);所以我期望std::adjacent_find会返回迭代

c++ - Armadillo C++ : Efficient and concise way to multiply every row of a matrix by a vector?

我想知道是否有一种高效简洁的方法来对ArmadilloC++矩阵的每一行(或列)与vector进行逐元素乘法。行(或列)和vector大小相同。例如,如果fmat::each_row()(和/或each_col())可以用作右值,我想要这样的东西来编译(目前它不会编译):#includeintmain(){usingnamespacearma;fmatm(20,10);fvecv(10);//acolumnvectorm.each_row()%v.t();//Currentlyacompilererror.return0;} 最佳答案

c++ - 在静态初始化期间创建和使用 vector 是否安全?

我有C++代码,它声明了由函数调用初始化的静态生命周期变量。被调用函数构造一个vector实例并调用它的push_back方法。代码是否因C++静态初始化顺序失败而面临毁灭性风险?如果不是,为什么不呢?补充信息:什么是“静态初始化顺序失败”?在C++FAQ10.14中有解释为什么我会认为使用vector会引发惨败?vector构造函数可能会使用另一个动态初始化的静态生命周期变量的值。如果是这样,那么在我的代码中使用vector之前,没有什么可以确保vector的变量被初始化。初始化result(参见下面的代码)可能会在vector的依赖项完全初始化之前调用vector构造函数,从而导致

c++ - 使用另一个 vector 中的值对 vector 进行排序

这个问题在这里已经有了答案:HowdoIsortastd::vectorbythevaluesofadifferentstd::vector?[duplicate](13个答案)关闭9个月前。我有一个名为foo_vec的std::vector包含类Foo的对象。假设Foo有一个成员变量intx,我还实现了一个函数CompareInts(inta,intb)返回的最小值a和b。然后,我可以根据对象的x值对vector进行std::sort操作。但是,如果这些x值不是Foo的成员变量,而是在另一个名为的std::vector中怎么办?x_vec。这里,x_vec的第一个元素对应于foo_v

c++ - 如何将字符串 vector 传递给 foo(char const *const *const)?

编辑:在实现JamesHopkin的建议后,我仍然收到“无效名称‘null’”的警告,这比那些奇怪的字符要好得多。然后,我回去再次阅读库文档,结果发现对于那个特定的函数,它的参数应该比aNames的大小多一个非NULL字符串元素。该附加字符串还有其他用途。再添加一个字符串后,代码运行正常。都是我的错,我很抱歉。原帖:你好,这是我的第一篇文章,所以请多多关照。我在这个论坛上搜索并用谷歌搜索,但我仍然找不到答案。这个问题困扰了我一天多了,请大家帮帮忙。谢谢。我需要将字符串vector传递给库函数foo(charconst*const*const)。我不能传递&Vec[0]因为它是一个指向字

c++ - CUDA 中的稀疏矩阵 vector 乘法

我正在尝试在GPU上实现矩阵vector乘法(使用CUDA)。在我的C++代码(CPU)中,我将矩阵加载为密集矩阵,然后使用CUDA执行矩阵vector乘法。我还使用共享内存来提高性能。如何在知道我的矩阵是稀疏矩阵的情况下以高效方式加载矩阵?下面是我加载矩阵的C++函数:intreadMatrix(char*filename,float*&matrix,unsignedint*dim=NULL,intmajority=ROW_MAJOR){unsignedintw,h,x,y,num_entries;floatval;std::ifstreamfile(filename);if(fil