草庐IT

c++ - Boost::Spirit::QI 解析器:解析元素的索引

是否有可能(使用Boost::Spirit::QI)从逗号分隔的字符串中解析数字,以便我获得每个已解析数字的索引?假设我有一个字符串"23,123,65,1"并且我想将这些数字中的每一个插入到给定位置(0,1,2,3)的矩阵中。一种方法是将数字解析为std::vector,然后将它们复制到矩阵行,但速度不是特别快。目前我正在使用vector变体:Matrixdata(10,4);introw=0;intcol=0;std::stringstr="23,123,65,1";std::vectorres;if(qi::parse(str.begin(),str.end(),qi::doub

c++ - std::queue<T, list<T>>::size() 在 O(n) 中很慢?

我在使用队列的代码中遇到了意外的性能行为。我意识到当队列中有更多元素时性能会下降。事实证明,使用size()方法是原因。这是一些显示问题的代码:#include#include#include#include"Stopwatch.h"usingnamespacestd;structBigStruct{intx[100];};intmain(){CStopwatchqueueTestSw;typedefBigStructQueueElementType;typedefstd::queue>QueueType;//typedefstd::queueQueueType;//nosurpris

c++ - size_type 和 int 之间的区别

#include#includeusingnamespacestd;intmain(){vectorstudent_marks(20);for(vector::size_typei=0;i>student_marks[i];}return0;}我在某处读到,最好使用size_type代替int。它真的会对实现产生巨大影响吗?使用size_type有什么好处? 最佳答案 vector::size_type保证涵盖vector大小的所有可能值范围.一个int不是。请注意vector::size_type通常与std::size_t相同,

c++ - 变长数组 : How to create a buffer with variable size in C++

我目前正在编写一个移动平均线类。目标是在创建Running_Average类的新对象时能够将缓冲区大小指定为构造函数的一部分。#include#include"Complex.h"#include#include#include#includeusingnamespacestd;classRunning_Average{public:doublesum=0;doubleaverage=0;inti;doubleAverage(void);//MemberfunctionsdeclarationvoidAddSample(double);Running_Average(int);};Ru

c++ - 根据 size() 排序 vector

我有一个像vector>v(points);这样的二维vector其中坐标类是:classcoordinate{public:intx;inty;coordinate(){x=0;y=0;}};积分是20。如何基于v[i].size()对单个vectorv[i]进行排序,即基于插入v[i]的坐标对象的数量。??? 最佳答案 1)创建一个根据大小比较两个vector的函数:boolless_vectors(constvector&a,constvector&b){returna.size()2)用它排序sort(v.begin(),v

c++ - 从 std::array 等获取 size_type 的惯用方法

由thisquestion触发,我想出了以下代码(在我的回答中是boost::array,但同样适用于std::array):template::size_typesize>voidDataTransform(std::arraydata){}我对::size_type一点都不满意.我必须以一定的大小进行实例化,才能知道size_type.对于std::array我本可以使用size_t,那么一般情况呢?如果size_type怎么办不是size_t?或者更一般的(即不适用于std::array)如果size_type怎么办?不同的尺寸是不同的(愚蠢但可能)?我知道这个问题相当学术,有很

c++ - 并行 I/O SSD 与 HDD 的惊人结果

我的一些关于并行I/O的测试发生了一个非常奇怪的情况。情况是这样的。我有多个线程打开同一个文件的文件处理程序,并从文件的多个位置(均匀间隔)读取有限数量的字节并将其转储到数组中。一切都是通过boost线程完成的。现在,我假设硬盘驱动器由于随机访问搜索而应该更慢。这就是为什么我的测试实际上是针对SSD的。事实证明,与HDD相比,从固态硬盘读取同一文件时,我几乎没有得到任何加速。想知道问题可能是什么?这对我来说是不是很令人惊讶/我也在下面发布我的代码以查看我到底在做什么:voidreadFunctor(std::stringpathToFile,size_tfilePos,BYTE*buf

c++ - 在哪里可以找到 C++ STL 中 vector 的 size_type 定义?

将vector的size()函数的结果转换为unsignedint似乎是安全的。不过,我怎么能确定呢?我的文档不清楚size_type是如何定义的。 最佳答案 不要假定容器大小的类型(或在其中键入的任何其他内容)。今天?目前最好的解决方案是使用:std::vector::size_type其中T是您的类型。例如:std::vector::size_typei;std::vector::size_typej;std::vector>::size_typek;(使用typedef可以帮助使其更好地阅读)对于迭代器和“内部”STL容器中的

c++ - 错误 : initializer fails to determine size of ‘K’

我在行中收到错误“初始化器无法确定‘K’的大小”intK[]=newint[Vertices->total];如何解决? 最佳答案 改变intK[]=newint[Vertices->total];到int*K=newint[Vertices->total];第一个是Java创建数组的方法,其中K是对整数数组的引用。但是在C++中,我们需要让K成为一个指向整数类型的指针。 关于c++-错误:initializerfailstodeterminesizeof‘K’,我们在StackOver

c++:使用模板在类中定义可变长度数组

我正在尝试构建一个类MapV2。在类中,我希望有一个Cell对象数组作为私有(private)成员(Cell是另一个类)。我正在尝试获取它,以便map的大小由与构造函数一起使用的模板参数分配。即,我正在尝试获得类似于以下内容的内容:constsize_tarraySize=12;MapV2myMapV2;这是我的文件Map.h:#pragmaonce#include#include"Cell.h"templateclassMapV2{public:MapV2();~MapV2();private:CellmyMapV2[M*N];};这是Map.cpp:#include#include