草庐IT

vector_c

全部标签

c++ - 扩展 std::vector 是个好主意吗?

稍微使用javascript,我意识到与C++相比,它的开发速度更快,后者由于通常不适用的原因而减慢了编写速度。总是传递.begin()和.end()是不舒服的,这在我的所有应用程序中都会发生。我正在考虑扩展std::vector(更多的是通过封装而不是继承),它主要遵循javascript方法的约定,例如.filter([](inti){returni>=0;}).indexOf(txt2).join(delim).reverse()代替autoit=std::copy_if(foo.begin(),foo.end(),std::back_inserter(bar),[](inti)

c++ - 将 std::wstring 拆分为 std::vector

这个问题展示了如何拆分string进入vector使用单个字符定界符。问题:Rightwaytosplitanstd::stringintoavector但是,将此技术应用于wstring并不像我想的那么容易。因此这绝对不是重复的!wstringstreamstringStream(str);istream_iteratorbegin(stringStream);istream_iteratorend;List=vector(begin,end);copy(List.begin(),List.end(),ostream_iterator(cout,";"));第二行无法使用VS2015

c++ - 指向 vector 元素的指针

如果我有一个指向vector中元素的指针,比如元素2,然后该元素与同一vector的元素4交换。指针现在指向元素2、元素4还是两者都不指向?示例:vectora等于[1,2,3,4,5]创建指向元素2的指针,在本例中它等于3交换元素2和4vectora现在是[1,2,5,4,3]vector指向哪里? 最佳答案 你的意思是,“指针指向哪里?”。如果是这种情况,它将指向内存中与以前相同的位置,该位置现在由值5占用。此外,我假设您的意思是交换两个位置之间的值。为什么?仅仅是因为你的指针指向了一个内存位置。存储在那里的内容并不重要——它可

C++ vector 数学和 OpenGL 兼容

我一直在做很多vector数学的事情,并为它写了我自己的模板。我的要求是很多vector数学(加法、减法、缩放、叉积和点积),我还需要能够将我的vector作为float[]传递,以便openGL可以使用它。用了一段时间挺开心的,今天有个讲师看到了,吐槽一下。他特别讨厌两件事(我理解其中之一),我对继承的使用,因为它似乎不遵循isa风格。而我的类型转换(T*)this,当然他没有太多的解决方案。首先:继承,我需要能够使用vec2到vec4,所以我设计了这样的vector。templateVector2D{public:getX(),getY(),setX(),setY()....};t

c++ - 从 vector C++ 中删除对象时出现段错误

所以当我运行这个函数时出现段错误classvector>::iteratoritr=records.begin();for(;itr!=records.end();++itr){if(itr->isSelected()){itr=records.erase(itr);recordSize--;}}我的vector是vector>records;和函数isSelected()只是一个boolean选择对象时为真,未选择时为假。谁能帮帮我,我看不出这样做有什么问题 最佳答案 在删除最后一个元素的情况下,itr将首先是records.en

c++ - 成为瓶颈时优化 `std::vector operator []`( vector 访问)

gprof说我的高计算应用程序53%的时间都在std::vectoroperator[](unsignedlong)中度过,其中32%用于一个经常使用的vector。更糟糕的是,我怀疑我的并行代码无法扩展到超过3-6个内核是由于相关的内存瓶颈。虽然我的应用程序确实花费了大量时间访问和写入内存,但似乎我应该能够(或至少尝试)做得比52%更好。我应该尝试使用动态数组吗(在大多数情况下大小保持不变)?这可能有助于解决可能的瓶颈吗?实际上,我的首选解决方案是解决瓶颈并为方便起见保留vector。基于以上,是否有任何可能的罪魁祸首或解决方案(tcmallocout)?

c++ - vector::max_size 的实际使用

这question让我想到了vector类中的max_size方法。很明显,实际上vector中包含的元素数量将比max_size返回的元素数量少得多。所以我想知道这在哪里有用?有什么线索吗? 最佳答案 它真的不是很有用。唯一的理论上的用法是检查您是否需要一个大于max_size()的容器,您就有麻烦了。但是在考虑将数据库服务器端口连接到微波炉时,您可能已经意识到这一点。委员会曾考虑改进该功能,但发现它的用处不足以值得更改:max_size()isn'tusefulforverymanythings,andtheexistingwo

c++ - vector.push_back 右值和复制省略

我像这样push_back一个临时对象到一个vector中,vectorvec;vec.push_back(A("abc"));编译器是否会应用复制省略将临时A("abc")直接构造到vector中,以便A'将临时对象插入vec时不会触发s复制构造函数。 最佳答案 如果你有一个支持右值引用的编译器,它会被移动到vector中,这有时非常便宜。另一种方法是直接在vector中构造对象,这可以通过vec.emplace_back("abc");来完成。这只会调用一个构造函数。这两个都是C++11的特性。此处不允许省略复制,因此如果没有这

c++ - 使用 static_cast 处理混合(基础和派生)对象的 vector 是否存在性能风险? (又名 "it this a dumb idea?")

给定基类gameObject和派生类animatedGameObject,我认为将它们的所有实例存储在std::vector。如果vectorGameObjects声明为gameObject*的基类型,则派生对象实例需要强制转换。例子:vectorGameObjects;gameObjectA*=newgameObject(...init...);animatedGameObjectB*=newanimatedGameObject(...init...);GameObjects.push_back(A);GameObjects.push_back(B);//toaccesstheani

c++ - 来自 std::vector of objects 的 memcpy 底层数据

这是安全的还是恰好适用于我当前的编译器?标准中有关于此的内容吗?浮点vector中的结果是正确的。classColor{public:Color(floatr,floatg,floatb,floata):mColor{r,g,b,a}{};inlineconstfloat*data()const{returnmColor;}private:enum{vectorSize=4};floatmColor[vectorSize];};//teststd::vectorcolors(2);std::vectorfloats(8);colors[0]=Color(0.1,0.2,0.3,0.4)