#define SHOW_VEC(_type,_vec,_it)\
vector<_type>::iterator _it = _vec.begin();\
while(_it!=_vec.end()){\
cout << *_it++ << endl;\
}
我们经常有时候会想要遍历输出一个容器里面的每个元素,
一般来说我们通常想到的是函数模板泛型来实现不通类的容器的遍历输出,
但就算实现了该实现的部分,
有时候编译器会出现奇怪的暂时解决不了的问题
那么我们可以用宏定义代码块来先顶上一阵(不过这不是长久之计,为了程序的健康,请只在调试中使用)
例如:
有了这个定义,我们就可以方便的输出vec里面的内容了,
为了避免迭代器重复定义,你还要把每个迭代器弄个不同的名字,
但是不要在宏代码块里面随便使用动态内存,内存泄漏什么的最讨厌了,
一般来说宏代码块里面的任何动作都最好不要影响外面的世界,
你甚至还可以把vector也换成宏参数,只要你确实了解你在干什么。
调用他:
vector<string> vi(4,"xx");
SHOW_VEC(string,vi,it);
vector<int> ve(4,5);
SHOW_VEC(int,ve,itf);
是不是比起声明函数模板再实现它然后调用方便多了- -