精选文章

推荐一款Chrome插件Infinity让新标签页焕然一新 Infinity new tab 是一款实用又简洁的chrome新标签页,可以完美替代默认的新标签页。从使用用chrome浏览器开始,就喜欢使用各种插件,屏蔽广告的,印象笔记,当然还有新标签页。由于大学专业的关系,和对于前端的热爱,决定开始自己写一个chrome扩展的新标签页,前期写了米鱼新标签页,v+新标签页。得到很多热心用户的反馈建议,慢慢的发现,这2个产品不能满足用户的一些需求,也没有达到用户心中所期待的一个完美产品。于是决定从新再做一个全新的,能够给人眼前一亮的感觉,也就是...

继续阅读

Android下使用TCPDUMP抓包Wireshark分析数据 如果想分析Android下某个APP的网络数据交互,需要在Android手机上抓包,最常用的抓包工具非tcpdump莫属,用tcpdump生成Wireshark识别的pcap文件,然后将pcap文件下载到电脑上,用电脑上的Wireshark加载pcap文件,通过Wireshark分析tcpdump抓取的数据。...

继续阅读

Mac下部署Android开发环境附加NDK 作为开发者,我们深有体会,不管是进行什么开发,为了部署开发环境,我们往往需要折腾很长时间、查阅很多资料才能完成,而且这次折腾完了,下次到了另一台新电脑上又得重新来过,整个部署过程记得还好,要是不记得又得重新开始,而且遇到Android这种GFW阻隔了开发资源下载链接的环境部署,又尤其浪费时间。所以这也是我写下这篇教程的初衷跟动力源泉,希望大家参考了这篇教程以后可以轻轻松松在Mac系统下将Android环境部署好。...

继续阅读

稍顯嚴肅的台中 坦白說,留在腦海中的台中影像並不多,來台灣之前在Booking上只訂到了台中的一家青旅,第一次住青旅有些不習慣,幹什麼都放不開。 同屋的一個男生是台灣人,不過一年中四分之三的時間在上海跟北京,這麼說來跟我還是比較有共同話題的。得之我準備花15天的時間環島,覺得太倉促了,他們大學時期花一個半月的時間也不見得能將台灣島給逛完。我只能無奈地表示,兩岸允許的簽證時間有限,自己的空閒時間更有限,只能用打卡式的旅行了,我深知正真地旅行應該慢下來,融入當地的環境,感受他們的風土人情,但第一次只能這樣作罷,以後換成民進黨上台,形勢會變成怎樣還不得而知,能否再過來還是個未知數。而我一向信奉的人生格言是秉燭夜遊,活在當下,所以,理解自己吧。...

继续阅读

為之留戀的新竹 來新竹之前本沒有對她有過高的期待,慢慢對她加分要從桃園火車站出發前往新竹開始。 在桃園火車站的候車月台上,有醒目的旅遊資料發放處,這上面的擺放的全是新竹的旅遊宣傳資料,關鍵的是資料做得非常簡潔易懂,而接下來一天的新竹之行就全部是依據這份寶典的指引來完成的。...

继续阅读

  • Prev
  • Next

C++ Primer笔记之顺序容器(一)

2

文章分类 : C++, C++Primer笔记, 应用与编程

1、顺序容器:将单一类型的元素聚合起来成为容器,然后根据位置来存储和访问这些元素。

2、要定义某种特殊类型的容器,必须在容器名后加一对尖括号,尖括号里面提供容器中存放的元素的类型。

3、将一个容器复制给另一个容器时,类型必须匹配,容器类型和元素类型都必须相同。

4、容器元素类型必须满足以下两个约束:元素类型必须支持赋值运算;元素类型的对象必须可以复制。

5、引用不支持一般意义的赋值运算,因此没有元素是引用类型的容器。

6、IO库类型不支持复制或赋值,因此不能创建存放IO类型对象的容器。

7、在指定容器元素为容器类型时,必须按如下形式使用空格:

vector < vector<string> > lines;

8、list容器的迭代器既不支持算术运算,也不支持关系运算,它只提提供前置或后置的自增、自减运算以及相等(不等)运算。

9、需要使用元素类型时,只需要value_type即可,如果要引用该类型,则通过reference和const_reference类型实现。

10、由于迭代器可能指向超出容器末端的下一位置,这是一个不存在的元素,因此insert函数是在其指向位置之前而非其后插入元素。

11、切忌将end操作返回的迭代器值存储在局部变量中,否则存储的迭代器很可能失效。

除非注明,文章均为CppLive 编程在线原创,转载请注明出处,谢谢。

本文地址:https://www.cpplive.com/html/1165.html

评论 (2)

  • Adoo says:

    😛 大胆给哥们几点建议:关于3,可以使用迭代器或指针来进行容器类型不匹配的容器复制。关于7,只需要将两个的地方用空格隔开,因为编译器会误当作移位操作符<>,据说有些新的编译器,已经支持关于这一点的智能判断,但我没试过。关于11,这点其实并没有禁忌,当容器有插入或删除操作的时候,存储起来的末端迭代器会失效,这种情况下要注意,如果可以确保不发生插入或删除操作,将末端迭代器存储起来还能提高效率,这一点不记得哪本书上说过,c++ primer 好像也只是推荐我们每次使用末端迭代器时调用end获得,而不存储。

    • CppLive says:

      嘿嘿,谢谢Adoo兄指教,关于7,只要不被编译器误解为“<<”即可,其他空格属于个人编程风格问题;关于11,用“切忌”俩字不过为了让自己提高警惕而已,就跟“==”操作符最好将左值放右边一样;关于3,还真是学习了~ 😛

  • 这里因为你的留言而存在!!!

    You must be logged in to post a comment.