每次当你发现自己要动态的分配一个数组时(例如想写“new T[]”时),你都应该考虑用vector和string来代替。一般情况下,当T是字符类型时用string,否则用vector。不过在一种特殊的情况下,vector<char>可能是一种更为合理的选择。
许多string实现在背后使用了引用计数技术,这种策略可以消除不必要的内存分配和不必要的字符拷贝,从而可以提高很多应用程序的效率。可惜,对于一个程序员是优化的东西,对另一个程序员则未必。如果在多线程的环境中使用了引用计数的string,你会发现,由避免内存分配和字符拷贝所节省下来的时间还比不上花在背后同步控制上的时间。如果所使用的string是以引用计数方式来实现的,而你又运行在多线程环境中,并认为string的引用计数实现会影响效率,那么,考虑使用vector<char>而不是string。vector的实现不允许使用引用计数,所以不会发生隐藏的多线程性能问题。