个人简历熟悉的软件写熟悉 STL,答不出这个题,算过分吗

帐号:密码:下次自动登录{url:/nForum/slist.json?uid=guest&root=list-section}{url:/nForum/nlist.json?uid=guest&root=list-section}
贴数:40&分页:shengjie发信人: Heartwork (Heartwork), 信区: CPlusPlus
标&&题: Re: 简历写熟悉 STL,答不出这个题,算过分吗?
发信站: 水木社区 (Mon Mar 23 08:30:42 2015), 站内 && 【 在 yangtou 的大作中提到: 】
: 第一次push_back就可能会出错吧,s是引用,push_back参数也是引用,很可能s引用到构建object时候已经失效了吧,不知道标准怎么规定的。
: 安全的办法是 push_back(std::move(s
恩,没错,第一次就可能失败。 && 实践中,引用容器内部的元素是比较危险的。
-- && ※ 来源:·水木社区 ·[FROM: 111.206.20.*]
yangtou发信人: yangtou (yangtou), 信区: CPlusPlus
标&&题: Re: 简历写熟悉 STL,答不出这个题,算过分吗?
发信站: 水木社区 (Mon Mar 23 15:00:34 2015), 站内 && 这个为什么单线程不会?比如实现过程如下:
1 push_back的时候传入了引用s。
2发现vector的capacity不够了,于是重新分配内存。
3移动(move)旧内存object到新内存。
4从引用s构造新内存上的新对象,这时s已经无效了吧?
我猜stl不会先构造一个临时对象吧?
【 在 Tinro 的大作中提到: 】
: 单线程的话不会。讨论STL的时候默认都是单线程
-- && ※ 来源:·水木社区 ·[FROM: 116.228.88.*]
雨工发信人: rainsong (雨工), 信区: CPlusPlus
标&&题: Re: 简历写熟悉 STL,答不出这个题,算过分吗?
发信站: 水木社区 (Mon Mar 23 22:34:58 2015), 站内 &&&& 【 在 yangtou (yangtou) 的大作中提到: 】
: 第一次push_back就可能会出错吧,s是引用,push_back参数也是引用,很可能s引用到构建object时候已经失效了吧,不知道标准怎么规定的。
: 安全的办法是 push_back(std::move(s
&&&&&&&& 步骤(2)第一次push_back()不会出错。 &&&&&&&&&& 步骤(1)得到一个合法引用,在步骤(2)调用push_back()之前是合法的。 &&&&&&&& 作为标准库的函数,用户给了合法参数,push_back()有义务完成应有的功能; &&&&&&&& 除非某些特定情形比如造成效率问题之类。若有这样情形标准会给说明的。 &&&&&&&&&& 实际库的实现:如果需要reallocate,只有末尾添加的那个新元素在新内存块上 &&&&&&&& 构造完成,才会析构原来旧内存块上的原来n个元素再回收内存。 &&&&&&&&&& 对于步骤(3),此时因第二步的操作,引用s有可能非法。所以步骤(3)那样写是 &&&&&&&& 必然有问题。
1.一切赞颂归于真主。
2.这与伊斯兰信仰无关。 &&&& ※ 来源:·水木社区 newsmth.net·[FROM: 211.99.222.*]
yangtou发信人: yangtou (yangtou), 信区: CPlusPlus
标&&题: Re: 简历写熟悉 STL,答不出这个题,算过分吗?
发信站: 水木社区 (Tue Mar 24 07:48:57 2015), 站内 && 看了一下vc2013的stl实现,对内部元素是有特殊处理的 &&&& void push_back(const value_type& _Val) &&&&&&&& {&&&&// insert element at end &&&&&&&& if (_Inside(_STD addressof(_Val))) &&&&&&&&&&&& {&&&&// push back an element &&&&&&&&&&&& size_type _Idx = _STD addressof(_Val) - this-&_M &&&&&&&&&&&& if (this-&_Mylast == this-&_Myend) &&&&&&&&&&&&&&&& _Reserve(1); &&&&&&&&&&&& _Orphan_range(this-&_Mylast, this-&_Mylast); &&&&&&&&&&&& this-&_Getal().construct(this-&_Mylast, &&&&&&&&&&&&&&&& this-&_Myfirst[_Idx]); &&&&&&&&&&&& ++this-&_M &&&&&&&&&&&& } &&&&&&&& else &&&&&&&&&&&& {&&&&// push back a non-element &&&&&&&&&&&& if (this-&_Mylast == this-&_Myend) &&&&&&&&&&&&&&&& _Reserve(1); &&&&&&&&&&&& _Orphan_range(this-&_Mylast, this-&_Mylast); &&&&&&&&&&&& this-&_Getal().construct(this-&_Mylast, &&&&&&&&&&&&&&&& _Val); &&&&&&&&&&&& ++this-&_M &&&&&&&&&&&& } &&&&&&&& } && stlport对容器内部元素直接生成了临时对象 &&&& void _M_insert_overflow_aux(pointer __pos, const _Tp& __x, const __true_type& /*_Movable*/, &&&&&&&&&&&&&&&&&&&&&&&&&&&&&& size_type __fill_len, bool __atend) { &&&& //We need to take care of self referencing here: &&&& if (_M_is_inside(__x)) { &&&&&& value_type __x_copy = __x; &&&&&& _M_insert_overflow_aux(__pos, __x_copy, __false_type(), __fill_len, __atend); &&&&&& &&&& } &&&& _M_insert_overflow_aux(__pos, __x, __false_type(), __fill_len, __atend); && }
【 在 rainsong (雨工) 的大作中提到: 】
:&&&&&&&& 步骤(2)第一次push_back()不会出错。
:&&&&&&&& 步骤(1)得到一个合法引用,在步骤(2)调用push_back()之前是合法的。
:&&&&&&&& 作为标准库的函数,用户给了合法参数,push_back()有义务完成应有的功能;
: ...................
&& -- && ※ 来源:·水木社区 ·[FROM: 180.156.206.*]
押鲁不花将军发信人: knightma (押鲁不花将军), 信区: CPlusPlus
标&&题: Re: 简历写熟悉 STL,答不出这个题,算过分吗?
发信站: 水木社区 (Wed Mar 25 17:42:45 2015), 站内 &&&& 不算过分 && 经常碰到不知道删除元素迭代器失效、set不会自定义函数对象的 && 【 在 Dirac 的大作中提到: 】
: 有这样一个方法 f,传入一个 vector&string&,如果不为空,就把第一个元素取出来,填充到末尾两次:
: void f(vector&string& &v) {
:&&&& if (!v.empty()) {
: ...................
99995&& crazoy&&&&&& May 28&&● )
99996&& oldsongs&&&& May 28&&● 人真多(2)
99997&& exhcs&&&&&&&&May 28&&● oyeah!(0)
99998&& neverton&&&& May 28&&● )
99999 * bodylasher&& May 28&&● 啥叫QZ(2)
100000&& knightma&&&& May 28&&Re: 抢z这个事情(8)&&&&&&&&&&
&&&& ※ 来源:·水木社区 ·[FROM: 61.135.152.*]
inori发信人: inori (inori), 信区: CPlusPlus
标&&题: Re: 简历写熟悉 STL,答不出这个题,算过分吗?
发信站: 水木社区 (Wed Mar 25 22:33:09 2015), 站内 && libstdc++不是这么搞的。。所以。。。
【 在 yangtou 的大作中提到: 】
: 看了一下vc2013的stl实现,对内部元素是有特殊处理的
:&&&& void push_back(const value_type& _Val)
:&&&&&&&& {&&&&// insert element at end
: ...................
我每天早上上班的时候,都会在舆情监控大楼门口看见一个胖子 练狗 ” 立正,稍息,卧&& 倒,咬,扑,发帖“等各种动作,那狗只要做的好了,胖子就给个馒头或0.5。如果做的不&& 好。就会挨饿,挨鞭子。甚至杀掉。有一天,我实在看不下去了。跟那个胖子说你那么多&& 钱,最少也得让那狗吃饱了再练啊。太不人道了。谁知道刚说完那狗就上来咬我。妈的吓&& 死我了。以后再也不说了。&&&& ※ 来源:·水木社区 ·[FROM: 116.227.44.*]
喝了咖啡就话多-_-;发信人: javaboy (喝了咖啡就话多-_-;), 信区: CPlusPlus
标&&题: Re: 简历写熟悉 STL,答不出这个题,算过分吗?
发信站: 水木社区 (Wed Mar 25 23:47:31 2015), 站内 && 赞。。好认真! && 【 在 yangtou (yangtou) 的大作中提到: 】
: 看了一下vc2013的stl实现,对内部元素是有特殊处理的
:&&&& void push_back(const value_type& _Val)
:&&&&&&&& {&&&&// insert element at end
: ...................
Can't go back to where I used to be. &&&& ※ 来源:·水木社区 newsmth.net·[FROM: 140.206.206.*]
雨工发信人: rainsong (雨工), 信区: CPlusPlus
标&&题: Re: 简历写熟悉 STL,答不出这个题,算过分吗?
发信站: 水木社区 (Thu Mar 26 22:11:21 2015), 站内 && 对于 v.push_back(v[i]),且需reallocate新内存块的情形:
(1) stlport,先将此内部元素存为临时变量, &&&& reallocate,构造vector原有的n个元素,之后将临时变量复制至末尾。
(2) vc2013,先保存那个内部元素的下标, &&&& reallocate,构造vector原有的n个元素,之后将下标所指的元素复制至末尾。
(3) gcc4.9.2, &&&& reallocate,先复制此内部元素至末尾,之后再构造vector原有的n个元素。 &&&& 它是先使用此内部元素,然后才有原先n个元素的析构与内存释放之类。 && 这三种做法都能保证v.push_back(v[i])的正确。
个人偏爱的是gcc4.9.2的做法。 && 【 在 yangtou (yangtou) 的大作中提到: 】
: 看了一下vc2013的stl实现,对内部元素是有特殊处理的
:&&&& void push_back(const value_type& _Val)
:&&&&&&&& {&&&&// insert element at end
:&&&&&&&& if (_Inside(_STD addressof(_Val)))
:&&&&&&&&&&&& {&&&&// push back an element
:&&&&&&&&&&&& size_type _Idx = _STD addressof(_Val) - this-&_M
:&&&&&&&&&&&& if (this-&_Mylast == this-&_Myend)
:&&&&&&&&&&&&&&&& _Reserve(1);
:&&&&&&&&&&&& _Orphan_range(this-&_Mylast, this-&_Mylast);
:&&&&&&&&&&&& this-&_Getal().construct(this-&_Mylast,
:&&&&&&&&&&&&&&&& this-&_Myfirst[_Idx]);
:&&&&&&&&&&&& ++this-&_M
:&&&&&&&&&&&& }
:&&&&&&&& else
:&&&&&&&&&&&& {&&&&// push back a non-element
:&&&&&&&&&&&& if (this-&_Mylast == this-&_Myend)
:&&&&&&&&&&&&&&&& _Reserve(1);
:&&&&&&&&&&&& _Orphan_range(this-&_Mylast, this-&_Mylast);
:&&&&&&&&&&&& this-&_Getal().construct(this-&_Mylast,
:&&&&&&&&&&&&&&&& _Val);
:&&&&&&&&&&&& ++this-&_M
:&&&&&&&&&&&& }
:&&&&&&&& }
: stlport对容器内部元素直接生成了临时对象
:&& void _M_insert_overflow_aux(pointer __pos, const _Tp& __x, const __true_type& /*_Movable*/,
:&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& size_type __fill_len, bool __atend) {
:&&&& //We need to take care of self referencing here:
:&&&& if (_M_is_inside(__x)) {
:&&&&&& value_type __x_copy = __x;
:&&&&&& _M_insert_overflow_aux(__pos, __x_copy, __false_type(), __fill_len, __atend);
:&&&& _M_insert_overflow_aux(__pos, __x, __false_type(), __fill_len, __atend);
1.一切赞颂归于真主。
2.这与伊斯兰信仰无关。 &&&& ※ 来源:·水木社区 newsmth.net·[FROM: 211.99.222.*]
LadiesMan217发信人: qwepoi (LadiesMan217), 信区: CPlusPlus
标&&题: Re: 简历写熟悉 STL,答不出这个题,算过分吗?
发信站: 水木社区 (Mon Jun 29 05:48:04 2015), 站内 && if (!v.empty()){ &&&&&&&& v.push_back(v[0]); &&&&&&&& v.push_back(v[0]); &&&& }
这样写应该没问题,测试能通过。
【 在 Dirac (pp) 的大作中提到: 】
: 有这样一个方法 f,传入一个 vector&string&,如果不为空,就把第一个元素取出
来,填充到末尾两次:
: void f(vector&string& &v) {
:&&&& if (!v.empty()) {
: ...................
-- && ※ 来源:·水木社区 ·[FROM: 72.224.131.*]
打好魔兽发信人: GlobalMemory (...), 信区: CPlusPlus
标&&题: Re: 简历写熟悉 STL,答不出这个题,算过分吗?
发信站: 水木社区 (Mon Jun 29 07:59:42 2015), 站内 && 恩,虽然不确定到底能不能编译通过,不过看上去比主贴好懂些。 && 【 在 speedboy2998 的大作中提到: 】
: 不能简单一点吗?如果像下面这样,会被卡擦?
: void f(vector&string& &v)&&
: ...................
&& -- && ※ 来源:·水木社区 ·[FROM: 120.210.174.*]
文章数:40&分页:一道简单的逻辑题,但是95%的人答不出来 - 优秀范文网
一道简单的逻辑题,但是95%的人答不出来
一道简单的逻辑题,但是95%的人答不出来文章转载自网络,作者观点不代表本网站立场,如需处理请联系客服
用户相关视频Access denied |
used Cloudflare to restrict access
Please enable cookies.
What happened?
The owner of this website () has banned your access based on your browser's signature (37ccdc-ua98).没有记录。试试
提示:因为空间有限,本站不会保留所有帖子。

我要回帖

更多关于 简历 的文章

 

随机推荐