赞
踩
1、容器内的元素可以是基本类型,函数不是基本类型,指向函数的指针是基本类型(像bool char int double pointer可以,reference,function不行)
2、对于关联式容器,排序准则默认的是小于,不是小于等于,调用std::less来判断的
3、自己定义的类是不能直接放到容器里的不能被复制会造成一个玩家有两份实例
4、用容器的好处是复制元素很简单但会导致效率不高,不能在不同的容器里面管理同一份对象。
5、STL的设计原则是效率优先,安全为次的,不进行错误检查。也没有引入异常。
// STL是一个框架,将数据结构和算法进一步抽象。 // stl 容器的基本知识(常识部分) // 容器内元素的条件 // (1)必须可以复制(copy)或者搬移(move) (隐含的条件是在拷贝和搬移的过程中应该没有副作用) struct BadStruct { BadStruct() : m_id(g_id++) {} ~BadStruct() { std::cout << "bye\n";} // operator = int m_id; static int g_id; }; // bool char int double pointer // reference, function // (2) 元素必须可以被赋值操作来复制或者搬移 (因为容器和算法对复写的要求) // = // (3)元素可以被销毁 // 针对不同的容器还有特殊的要求 // 对于序列式容器,元素必须有默认的构造函数 // 对于某些操作,元素需要定义 == std::find // 对于关联式容器,排序准则默认的是 < > std::less // 无顺序容器,必须要提供一个hash函数 == // stl容器里面存的是元素的值而不是引用 // 那么我要问的是,到底我们的容器里面应该存的东西是什么呢? // class Player, Monster // STL对于错误是怎么处理 // 我们要记住的是STL的设计原则是效率优先,安全为次 // 异常?STL自己却不怎么采用。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。