Categories
不学无术

C++ STL容器能力一览表

摘自《C++标准程序库 (The Standard C++ Library)》pp.227
未摘齐,需要详细可参考6.9节:各种容器的运用时机
STL_container_compare

Categories
不学无术

C++类型转换符 static_cast, dynamic_cast, const_cast

“cast”一词在英文里有“浇铸”的意思,还是挺形象的。

1.static_cast

可以看做是利用一个原始值构建一个临时对象,并再设定初始值的时候使用类型转换。
例如:

float x;
...
cout << static_cast<int>(x); //float to int
...
cout << static_cast<string>("hello")); //char* to string

2.dynamic_cast

将多态类型(polymorphic type)成员向下转换为其对应的静态类型成员。这个cast是在运行时实时检验的,因此可以用来检测某个指针指向的对象到底是不是XXX类的。

class Car; //abstract class
class Cabriolet : public Car {...};
class Limousine : public Car {...};
void f(Car* cp){
    Cabriolet* p = dynamic_cast<Cabriolet*>(cp);
    if(p == NULL) {
        //cp is not referred to an object of Cabriolet
    }
}

当参数是个引用,并且类别转换失败的时候,会抛出bad_cast异常哦。

3.const_cast

去除某个对象的const修饰作用,也可以拿来去除volatile修饰作用。
 

Categories
不学无术

c++中vector自定义排序的问题

http://blog.csdn.net/stone_sky/article/details/8471722