vector的capacity(容量)问题:
vector一般会默认配置2k的内存容量,而当使用的内存超过配置的内存时,就会引起再分配,非常耗时,因此需要使用vector.reserve()提前分配大于使用空间的内存。
string的切片(获取子串)问题:
string.substr(start,num)
string的字符串相加问题:
右边至少有一个字符串甚至无法使用+=来避免该问题
string += char + char; 错误
string = string + char + char 正确
头文件中定义静态变量导致的“未定义前引用报错”:
定义全局变量时使用static,意味着该变量的作用域只限于定义它的源文件中,其它源文件不能访问。既然这种定义方式出现在头文件中,那么可以很自然地推测:包含了该头文件的所有源文件中都定义了这些变量,即该头文件被包含了多少次,这些变量就定义了多少次。
在头文件中定义变量会造成重定义:
假如将static去掉,编译的时候就会出现变量重定义的错误,这进一步证实了上面的推测,因为没有static的话变量的作用域是全局的,定义了两个以上的同名变量就会出现该错误。