草庐IT

data-add-back-btn

全部标签

c++ - g++ 4.9.3 提示 friended ctor 对 .emplace_back() 是私有(private)的,但喜欢 .push_back()

我肯定遗漏了关于emplace()和friend的其中一个优点。这是一个完整的最小示例,它重现了g++4.9.3的问题:classFoo{public:classBar{private:friendclassFoo;Bar(Foo&foo):foo(foo){}Foo&foo;};Bar&getBar(){//bars.push_back(*this);//worksfinebars.emplace_back(*this);//Foo::Bar::Bar(Foo&)isprivatereturnbars.back();}private:std::vectorbars;};

c++ - 视觉 C++ 2008 : debugging data behind pointer array

如何在VisualStudio2008中查看数组指针后面的数据而不是第一项?如果能看到任意数量的项目,而不仅仅是第一个,那将非常有用。 最佳答案 char*p=newchar[100];在监window口中输入:p,100 关于c++-视觉C++2008:debuggingdatabehindpointerarray,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/3659108/

c++ - 是否可以将 "add"设置为默认的复制构造函数?

是否可以“添加”到默认的复制构造函数?例如。对于这个类:classA{public:inta;int*b;};我只想写A::A(constA&rvalue):a(rvalue.a),b(newint(*(rvalue.b))){}没有a(rvalue.a)部分。(忽略坏/难看的代码和可能的内存泄漏) 最佳答案 你所要求的是不可能的。一旦声明了自己的复制构造函数,编译器就不会为您生成复制构造函数。这意味着您将无法简单地添加或扩充默认的复制构造函数,因为它不存在。可以这么说,要么全有要么全无。

c++ - pop_back() 可以减少 vector 的容量吗? (C++)

根据C++标准,是std::vector::pop_back()曾经允许减少vector的容量吗?我问是因为我想得到保证,以下代码不会抛出内存不足异常:my_vec.pop_back();if(...)my_vec.push_back(...);假设my_vec是一个std::vector.我猜有三种可能:是的,根据C++03和C++11这可能发生。不,C++11禁止这样做(但C++03不禁止)。不可以,C++03和C++11都禁止这样做。是的,我的问题与Doesstd::vector.pop_back()changevector'scapacity?有关,但我的问题具体是关于标准保证

c++ - priorC++11 中的 std::vector::begin() 是否等同于 C++11 中的 std::vector::data()?

是std::vector::begin()来自之前-C++11相当于std::vector::data()在C++11中?我问这个的原因是,在C++11之前,我曾经将std::vector::begin()视为指针,但在C++11之后,它不是,而且我不能转换为等效的指针。那么,我可以在C++11之后改用data()吗? 最佳答案 不,begin返回一个迭代器,而data返回一个指针。对于给定的实现,这些可能是同一件事,但您不应该指望这一点。 关于c++-priorC++11中的std::

c++ - 原子地 std::vector::push_back() 并返回索引

我需要创建一个函数,将一个值附加到vector并返回刚刚附加的值的索引。例子:intappend(std::vector&numbers,intnumber){intretval=numbers.size();//whatifsomeotherthreadcallspush_back(number)inbetweenthesecalls?numbers.push_back(number);returnretval;}我想以原子方式执行此操作,以便返回的索引始终正确,即使可能有多个线程将值附加到vector。如果push_back返回刚刚添加的项目的索引,那会很容易。如何保证返回正确的索

c++ push_back()在 vector 图中

我正在尝试将元素动态添加到map中包含的vector,以存储映射到不同ID的多个“粒子”对象数组。我是这门语言的新手,所以我很难理解这是否只能用迭代器来完成?在这种情况下,感觉有点矫枉过正。是否可以直接访问map内的vector?因为我可以按键访问map元素,并且因为每个键只有一个vector,所以它似乎应该是可能的。我真的没有确切的代码作为示例,但它看起来像这样:intcurrentId=1;map>particleMap;Particlep;particleMap[currentId]push_back(p);我确定我在这里遗漏了一些更大的概念,但我发现自己非常需要这种类型的数据结

c++ - 为什么data()和c_str()返回的是char const*,而operator[]返回的是char&?

为什么std::string::data和std::string::c_str()返回指向const字符的指针,而std::string::operator[]返回对可变字符的引用?std::stringstring("eightfoldisthegreatest");autos=string.data();*s='r';//illegalautot=&string[0];*t='r';//totallyfineauto&c=string[0];c='r';//totallyfine为什么std::string::data()和std::string::c_str()不返回char*,

c++ - "Bring all the zeros to the back of the array"面试挑战的良好 C++ 解决方案

我接受了一份Jr.开发工作的面试,他要求我编写一个程序,该程序接受一个整数数组并将零推到后面。这是约束条件(他一开始没有告诉我......就像在编程面试中经常发生的那样,我在解决问题的同时了解了问题的约束条件,哈哈):必须就地进行;不创建临时数组、新数组等。不必保留非零数字的顺序(我希望他一开始就告诉我)设置:intarr[]={0,-2,4,0,19,69};/*Transformarrto{-2,4,19,69,0,0}or{69,4,-2,19,0,0}oranythingthatpushesallthenonzerostothebackandkeepsallthenonzero

c++ - 为什么连续的 vector::push_back 会导致不同数量的构造函数调用?

classbase{private:intk;public:base(constbase&b){this->k=b.k;coutm;cout输出:firstpushbackc-ctor2ndpushbackc-ctorc-ctordestructorcalled3rdpushbackc-ctorc-ctorc-ctordestructorcalleddestructorcalled4thpushbackc-ctor5thpushbackc-ctorc-ctorc-ctorc-ctorc-ctordestructorcalleddestructorcalleddestructorcall