草庐IT

vector_c

全部标签

c++ - 使用索引为 2D Vector 赋值

我正在尝试通过使用两个索引将值添加到2Dvector。当我运行我的程序时,我收到一条Windows消息,提示该程序已停止运行。使用Dev-C++调试显示存在段错误(我不确定这是什么意思)。请不要建议使用数组,我必须为此作业使用vector。#include#includeusingnamespacestd;intmain(intargc,char**argv){vector>matrix;cout我创建了一个测试用例,我想用值5填充一个3X3矩阵。我怀疑这与未具体定义的2Dvector的大小有关。我如何使用索引用值填充二维vector? 最佳答案

C++ 将 std::tuple<A, A, A...> 转换为 std::vector 或 std::deque

在我正在编写的简单解析器库中,使用std::tuple_cat组合了多个解析器的结果。.但是,当应用多次返回相同结果的解析器时,将此元组转换为vector或双端队列等容器变得很重要。如何做到这一点?这种元组怎么能std::tuple,std::tuple,std::tuple等被转换成std::vector?我认为使用typename...As可能是可行的和sizeof...(As),但我不确定如何创建一个较小的元组来递归调用该函数。或者如何编写一个从元组中逐个提取元素的迭代解决方案。(因为std::get(tuple)是在编译时构建的)。如何做到这一点?

c++ - 使用 std::move 返回 std::vector

我有一个非常基本的问题:返回std::vector是个好主意吗?使用std::move?例如:classA{};std::vector&&func(){std::vectorv;/*fillv*/returnstd::move(v);}我应该返回std::map,std::list..等...以这种方式? 最佳答案 你声明了一个通过右值引用返回的函数——这几乎永远不应该做(如果你通过引用返回局部对象,你最终会得到一个悬空引用)。而是声明函数按值返回。这样,调用者的值将由函数返回的右值构造。返回值也将绑定(bind)到任何引用。其次,

c++ - 在访问 vector<bool> 中的元素地址时获取临时地址

我仅在访问boolvector中的元素地址时收到警告。对于int等其他数据类型的vector,我不会收到任何警告。例如vectorboolVect;boolVect.push_back(false);if(boolVect.size()>0){cout我在声明“cout有人可以澄清一下吗? 最佳答案 std::vector坏了(参见例如http://www.informit.com/guides/content.aspx?g=cplusplus&seqNum=98或Alternativetovector)。它是std::vector

c++ - 如果类成员是 vector ,我们是否应该显式地编写一个复制构造函数?

structmyType{vectorls;};这里ls持有指向char的指针。如果未提供myType的用户定义复制构造函数,myType的默认复制构造函数是否会执行ls的深层复制? 最佳答案 Herelsisholdingpointertochar.Ifcopyconstructorisnotprovided,willdefaultcopyconstructordothedeepcopy?默认的复制构造函数将复制所有成员——即调用它们各自的复制构造函数。1所以是的,std::vector(就C++而言没有什么特别之处)将被正式复制

c++ - std::vector push_back(Object()) 和 push_back(new Object()) 的区别?

在我当前的代码中,我想将新的DrawObjects插入到我创建的vector中,std::vector对象;有什么区别:objects.push_back(DrawObject(name,surfaceFile,xPos,yPos,willMoveVar,animationNumber));和objects.push_back(newDrawObject(name,surfaceFile,xPos,yPos,willMoveVar,animationNumber)); 最佳答案 第一个添加非指针对象,而第二个添加指针到vector。

c++ - 尝试从 vector 中获取 unique_ptr 元素后出错

我阅读了有关如何插入unique_ptr的信息进入vector>:WhycanInotpush_backaunique_ptrintoavector?但是我如何取回一个元素呢?我举了个例子:#include#includeclassA{public:A(intx,inty){x_=x;y_=y;}private:intx_;inty_;};intmain(){std::vector>vec_a;std::unique_ptrtmp_a=std::unique_ptr(newA(13,32));vec_a.push_back(std::move(tmp_a));vec_a.push_ba

c++: vector<Base> 可以包含 Derived 类型的对象吗?

标题几乎说明了一切。基本上,这样做是否合法:classBase{//stuff}classDerived:publicBase{//morestuff}vectorfoo;Derivedbar;foo.push_back(bar);根据我看过的其他帖子,下面是可以的,但我不想在这种情况下使用指针,因为很难使其线程安全。vectorfoo;Derived*bar=newDerived;foo.push_back(bar); 最佳答案 不,Derived对象将是sliced:所有额外的成员都将被丢弃。使用std::vector>而不是原

c++ - std::vector 大小?

程序:#includeintmain(){std::vector::size_typesize=3;std::vectorv{size};}编译时g++(Ubuntu/Linaro4.6.3-1ubuntu5)4.6.3产生错误:ppp.cpp:Infunction‘intmain()’:ppp.cpp:5:28:error:narrowingconversionof‘size’from‘std::vector::size_type{akalongunsignedint}’to‘int’inside{}[-fpermissive]ppp.cpp:5:28:error:narrowing

c++ - 如何在不制作拷贝的情况下将 `std::string` 转换为 `std::vector<unsigned char>`?

我想调用一个库函数,它的签名是:boolWriteBinary(conststd::vector&DataToWrite);我有一个std::string变量,我想将这个函数作为参数发送给它。voidWriteString(conststd::string&TextData){//...WriteBinary(TextData);//有没有一种方法可以直接发送std::string变量而不复制它? 最佳答案 没有办法做到这一点,因为不能保证这两种类型的布局在任何方面都相似。最好的方法是修复WriteBinary以使用“迭代器”代替: