草庐IT

vector_tostr

全部标签

c++ - 将 vector 的 vector 合并为单个 vector

我有T的vectorvector:std::vector>vector_of_vectors_of_T;我想将它们全部合并到T的单个vector中:std::vectorvector_of_T;我目前正在使用这种方法:size_ttotal_size{0};for(autoconst&items:vector_of_vectors_of_T){total_size+=items.size();}vector_of_T.reserve(total_size);for(autoconst&items:vector_of_vectors_of_T){vector_of_T.insert(en

c++ - C++中二维 vector 的列大小和行大小

我有一个这样的vector:vector>myVector;此vector中的所有行号和列号都相同。我想找出这个vector的行数和列数。我想出的行数:myVector[0].size();对于列数,我想不出任何办法。你能告诉我我的行数是否正确,你能告诉我如何获得列数吗?谢谢。 最佳答案 你有一个整数vector的vectormyVector[0].size()返回二维vector中第一个intvector中元素的数量。这种vector的结构是这样的:myVector[Vector[0,4,2,5],Vector[1,4,2]];当

c++ - 如何返回 vector 的 'read-only' 拷贝

我有一个具有私有(private)属性vectorrectVec的类;classA{private:vectorrectVec;};我的问题是如何返回我的Vector的“只读”拷贝?我正在考虑这样做:classA{public:constvect&getRectVec(){returnrectVect;}}这是正确的方法吗?我在想这样可以防止被调用者修改vector(在vector中添加/删除Rect),那么vector里面的Rect呢? 最佳答案 这是正确的方法,尽管您可能也希望将函数设为const。classA{public:c

c++ - 一个好的 vector 散列函数

我有一些整数vector,我想在c++11的unordered_map中有效地存储我的问题是:我如何最好地存储这些并针对.find查询进行优化?我想出了以下哈希:classuint32_vector_hasher{public:std::size_toperator()(std::vectorconst&vec)const{std::size_tret=0;for(auto&i:vec){ret^=std::hash()(i);}returnret;}};然后将对象存储在unordered_map但是我确实有几个问题哈希的计算频率是多少,只有一个,一些随机数或次数?用==和散列函数创建

c++ - 在结构中初始化空 vector - C++

我有一个结构:typedefstructuser{stringusername;vectoruserpassword;}user_t;我需要用一个空的vector来初始化userpassword:structuserr={"",?};我应该用什么代替?? 最佳答案 两者std::string和std::vector让构造函数将对象初始化为空。您可以使用std::vector()但我会删除初始化程序。 关于c++-在结构中初始化空vector-C++,我们在StackOverflow上找到

c++ - 将 vector<string> 转换为 char** C++

我有一个vector多变的。我需要将它传递给接受char**的方法作为输入参数。如何做到这一点?如果可能的话,我需要传递一个可写的。更新1:在用于创建服务方法的工具中,我将参数指定为std::vector,但它会自动将限定符设置为&,这意味着该工具生成的我的方法定义将如下所示:std::stringSvcImpl::myMethodname(conststd::stringpar1,conststd::vector&par2,conststd::vector&par3){}此方法会自动调用,并使用传递的参数中的值。现在从这个方法内部,我将调用lib文件夹中的dll中的一个方法,如下所示

c++ - 如何创建 vector vector 的笛卡尔积?

我有一个vector,比如vector>items不同尺寸如下1,2,34,56,7,8我想根据这些vector的笛卡尔积来创建组合,例如1,4,61,4,71,4,8andsoontill3,5,8我该怎么做?我查看了几个链接,并在这篇文章的末尾列出了它们,但我无法解释,因为我对这种语言不太熟悉。有人可以帮我解决这个问题。#include#include#includeusingnamespacestd;intmain(){vector>items;intk=0;for(inti=0;i());for(intj=0;j这个程序有相等长度的vector,我把它放在这里是为了更容易理解我

c++ - std::vector emplace_back 可以从 vector 本身的元素复制构造吗?

当使用std::vector的push_back时,我可以推送vector本身的元素,而不必担心由于重新分配而使参数无效:std::vectorv={"a","b"};v.push_back(v[0]);//Thisisokevenifv.capacity()==2beforethiscall.但是,当使用emplace_back时,std::vector会将参数转发给std::string的构造函数,以便进行复制构造在vector中的位置。这让我怀疑vector的重新分配发生在新字符串被复制构造之前(否则它不会被分配到位),从而在使用前使参数无效。这是否意味着我不能用emplace_

c++ - std::vector 删除满足某些条件的元素

正如标题所说,我想删除/合并满足特定条件的vector中的对象。我的意思是我知道如何从vector中删除整数,例如值99。ScottMeyers的删除成语:vectorv;v.erase(remove(v.begin(),v.end(),99),v.end());但是假设如果有一个包含延迟成员变量的对象vector。现在我想消除所有延迟差异仅小于特定阈值的对象,并希望将它们组合/合并到一个对象。该过程的结果应该是一个对象vector,其中所有延迟的差应至少为指定的阈值。 最佳答案 std::remove_if来救援!99将被替换为U

c++ - vector 的 cbegin 和 begin 有什么区别?

成员(member)begin有两个重载,其中之一是const_iteratorbegin()const;。还有cbeginconst_iteratorcbegin()constnoexcept;。它们都将const_iterator返回到列表的开头。有什么区别? 最佳答案 begin将返回iterator或const_iterator,具体取决于调用它的对象的const限定。cbegin将无条件返回const_iterator。std::vectorvec;conststd::vectorconst_vec;vec.begin()