草庐IT

STL_vector

全部标签

c++ - 使用迭代器将 int 值赋给 vector

我在C++Primer(3.23)中进行了将近2天的小练习。我试过很多方法给vector赋值.我给你一个我工作的实际练习和我到目前为止的代码,但它是完全错误的。我做了很多研究,但没有发现任何有用的东西。编写程序创建一个vector与10int元素。使用迭代器,为每个元素分配一个为其当前值两倍的值。通过打印vector来测试程序这是我的代码intmain(){vectornum(10);for(autoit=num.begin();it!=num.end();++it)//iteratingthrougheachelementinvector{*it=2;//assignvaluetov

c++ - 如何在 O(logn) 中查找 STL 中元素的等级

我想在STL集中查找元素的等级。我能够从头遍历到那个元素并找出它的等级,但这需要O(n)。有什么方法可以在O(logn)中找到排名。 最佳答案 没有;平衡树不需要存储每个节点的后代数量,这需要更快地计算distance(s.begin(),iter)forstd::sets和迭代器iter(我猜你是这个意思)。因此,除非通过一项一项地计算,否则信息根本不存在。如果您需要执行许多此类计算,请将set复制到已排序的随机访问序列中,例如vector或deque,但随后修改序列变得昂贵。做你所要求的事情的树数据结构可能存在于某处的免费图书馆

c++ - OpenCV - 将 vector 的 vector 转换为 Mat

我想转换一个vector>至Mat因为我需要对此值应用自定义平滑过滤器。下图显示了正确的值我试过了。std::vector>angles;calculateAngles(angles);MatmatAngles(angles.size(),angles.at(0).size(),CV_64FC1,angles.data());但第一列中的值转换错误,值为2.12566e-314。生成的图像我还尝试将值直接放在Mat中.voidcalculateAngles(cv::Mat&im,cv::Mat&angles,intblockSize,int(*f)(intx,inty),int(*g)

c++ - STL 中的 Binary_search set over set 的成员函数 find?

为什么我们有上述两种方式来搜索集合中的元素?也可以使用查找算法来查找列表或vector中的元素,但是这些提供成员函数以及成员函数预期比通用算法更快的危害是什么?为什么我们需要删除算法并创建所有关于删除删除的戏剧,其中删除只会移动元素然后使用删除删除实际元素..就像STL列表提供了一个成员函数删除为什么其他容器不能只是提供删除功能并完成它? 最佳答案 Binary_searchinSTLsetoverset'smemberfunctionfind?Whydowehave2wayslikeabovetosearchforanelemen

c++ - 打开简历;对 vector<Rect> 进行排序并删除某些条目

我有这个问题,我无法解决这个问题。我正在尝试检测和跟踪视频中的某些内容。因此,我使用了GaussianBlur()、threshold()、findContours()等函数。findContours()为我提供了一个等高线vector,该vector稍后会转换为边界矩形。到目前为止,一切都很好。我现在需要从带有边界矩形的vector中得到的是它们按大小(area)排序并且只包含未被另一个矩形包围的矩形。为了更好地理解,我试着画了一个小草图,clickhereforimage.所以我正在寻找的是#8是第一个条目,然后是#1,#3,....应删除#2、#4、#9、#10和#11等条目。我

c++ - 在线程之间 move vector

我有一个线程使用这样的公共(public)接口(interface)不断收集数据项:classMyThread{public:classItem{//...};startup();shutdown();boolhasItems()const;//retrievecollecteditemsstd::vector&&items();private:std::mutexitemMutex;std::vectorcurrentItems;};检索项目还应该清除线程​​的项目列表。我返回一个右值,以便在调用方调用move构造函数。当然,检索项目应该是线程安全的,因此实现如下所示:std::ve

c++ - 按类型对 std::vector 进行排序

我在看http://channel9.msdn.com/Events/GoingNative/2013/Writing-Quick-Code-in-Cpp-Quickly在第36分钟左右,他们讨论了如果您要对集合调用虚拟方法,则按元素类型对集合进行排序的好处。如此给定classBase{};classDer1:publicBase{};classDer2:publicBase{};classDer3:publicBase{};vectormyVector;如何对myVector进行排序,使每种类型的元素都是相邻的?有没有办法不使用虚函数来识别每个派生类型?(也许使用typeid?)

c++ - vector 对上 lower_bound 的实现

我知道我们需要包含一些比较功能才能实现这一点。但不能写这个。例如:vector的元素={(2,4),(4,2),(5,1),(5,3)}找到=5lower_bound()应该返回2代码->#definepppairboolcmp(constpp&l,constpp&r){returnl.firstv;sort(v.begin(),v.end(),cmp);intid=(int)(lower_bound(v.begin(),v.end(),??)-v.begin());} 最佳答案 对(justliketuples)无论如何按字典顺序

c++ - 初始化 auto-inc 类型 vector 的 vector 时出现问题

我正在尝试生成一个包含递增数字的单元格的二次网格。#include#includeclassSimple{public:Simple():id(genId()){}staticintgenId(){staticintg_id=0;return++g_id;}intid;};typedefstd::vector>SimpleGrid;voidprintSimpleGrid(SimpleGrid&grid){for(inti=0;irow(dim);test[i]=row;}printSimpleGrid(test);return0;}我得到这个输出:111222333这与我的预期不同:1

c++ - vector 数组是完全连续的内存吗?

我知道vector保证是连续内存,数组也是。那么当我这样做时会发生什么:std::vectormy_array[10];my_array[2].push_back(11);my_array[2].push_back(7);内存会是什么样子?如果两者都需要连续,每次我在my_array上执行push_back()时,my_array[2]之后数组的每个元素都会向前推一个字节吗[2]?这是否与我有一个结构数组时的情况相同,其中结构具有可变大小的成员,例如字符串或另一个vector? 最佳答案 std::vector的内存占用由两部分组成