草庐IT

vector_tostr

全部标签

c++ - 如何用非平凡的初始值填充 vector ?

我知道如何用非平凡的初始值填充std::vector,例如序号:voidIndexArray(unsignedintlength,std::vector&v){v.resize(length);for(unsignedinti=0;i但这是一个for循环。有没有一种优雅的方法可以使用STL功能(并且不使用Boost)减少代码行数? 最佳答案 您可以使用generate算法来获得更通用的填充容器的方法:#include#include#includestructc_unique{intcurrent;c_unique(){curren

c++ - std::string 和 std::vector<char> 有什么区别?

那么主要区别是什么?在哪些情况下会用到它们? 最佳答案 vector向您保证&v[0]+n==&v[n]而字符串没有(实际上是这样,但不能保证)......AFAIKC++0x已经提供了这种保证constchar*没有隐式转换至vectorstring不是STL容器。例如,它没有pop_back()或back()功能最后但同样重要的是,不同的成员函数!String为您提供适合字符串的函数,例如用c_str()返回一个以null结尾的字符串底线:使用string当您需要使用字符串进行操作时。使用vector当你需要一个......好吧

c++ - 在 C++ 头文件中声明 vector

我正在制作的C++类的头文件中的vector声明存在一些问题。我的整个头文件如下所示:#ifndefPERSON_H#definePERSON_H#include"Message.h"#include#includeclassPerson{public:Person(){};Person(std::stringemailAddress);private:vectorinbox;vectorcontacts;std::stringemailAddress;};#endifPERSON_H我的错误发生在“私有(private)”声明(我声明我的vector)之后的行上。我得到的错误是C44

c++ - 返回 vector 与使用 vector 的参数返回它

使用下面的代码,问题是:如果使用“returnIntVector()”函数,vector是否从本地复制到“外部”(全局)范围?换句话说,与“getIntVector()”函数相比,它是更多时间和内存消耗的变化吗?(但提供相同的功能。)#include#includeusingnamespacestd;vectorreturnIntVector(){vectorvecInts(10);for(unsignedintui=0;ui&vecInts){for(unsignedintui=0;uivecInts=returnIntVector();for(unsignedintui=0;uiv

c++ - 我可以将 int 数组推送到 C++ vector 吗?

我的代码有问题吗?std::vectorweights;intweight[2]={1,2};weights.push_back(weight);无法编译,请帮忙解释一下原因:nomatchingfunctionforcallto‘std::vector>::push_back(int*&)’ 最佳答案 数组不能在STL容器中使用的原因是因为它要求类型是可复制构造和可赋值的(在c++11中也可移动构造)。例如,您不能对数组执行以下操作:inta[10];intb[10];a=b;//Willnotwork!因为数组不满足要求,所以不

c++ - 如何知道一个类型是否是 std::vector 的特化?

我整个上午都在处理这个问题,但没有任何结果。基本上,我需要一个简单的元编程东西,如果传递的参数是一种std::vector,我可以分支到不同的专业。模板的某种is_base_of。这样的事情存在吗? 最佳答案 在C++11中,您还可以采用更通用的方式:#include#include#include#includetemplateclassRef>structis_specialization:std::false_type{};templateclassRef,typename...Args>structis_specializa

c++ - 查找 vector 的 vector 的最大值/最小值

找到vector的vector的最大/最小项的最有效和标准(C++11/14)方法是什么?std::vector>some_values{{5,0,8},{3,1,9}};想要的最大元素是9想要的最小元素是0 最佳答案 这是一个多线程解决方案,它为通用类型T返回一个迭代器(或抛出)到最大值(假设operator是为T定义的)。请注意,最重要的优化是对“列”执行内部最大操作,以利用C++的列优先顺序。#include#includetemplatetypenamestd::vector::const_iteratormax_eleme

c++ - 为什么 vector::iterator 在重新分配时无效?

我不明白为什么在重新分配发生时vector的迭代器应该失效。难道不能简单地通过在迭代器中存储一个偏移量——而不是一个指针——来防止这种情况吗?为什么vector不是这样设计的? 最佳答案 只是为与性能相关的理由添加一个引用:在设计C++时,Stroustrup认为模板类如std::vector是至关重要的。接近原生数组的性能特点:Onereasonfortheemphasisonrun-timeefficiency...wasthatIwantedtemplatestobeefficientenoughintimeandspacet

c++ - 通过成员数据在 vector 中搜索结构项

我对c++很陌生,我正在尝试找到一种方法来搜索结构vector以查找具有特定成员数据的结构。我知道这适用于vector中的简单类型std::find(vector.begin(),vector.end(),item)!=vector.end()但是假设我有一个这样的结构:structFriend{stringname;stringnumber;stringID;};还有一个像这样的vector:vectorfriends;然后vector被friend填充。假设我想搜索具有特定ID的friend,并找出详细信息。或者从vector中删除某个结构。有没有简单的方法来做到这一点?

c++ - 在迭代同一 vector 时删除 vector 中的元素

这个问题在这里已经有了答案:关闭10年前.PossibleDuplicate:Erasingfromastd::vectorwhiledoingaforeach?我正在尝试根据这个算法实现顶点着色;/*GivenG=(V,E):ComputeDegree(v)forallvinV.Setuncolored=VsortedindecreasingorderofDegree(v).setcurrentColor=0.whilethereareuncolorednodes:setA=firstelementofuncoloredremoveAfromuncoloredsetColor(A)=