提供描述问题的最少代码:
struct A {
vector<string> v;
// ... other data and methods
};
A obj;
ifstream file("some_file.txt");
char buffer[BIG_SIZE];
while( <big loop> ) {
file.getline(buffer, BIG_SIZE-1);
// process buffer; which may change its size
obj.v.push_back(buffer); // <------- can be optimized ??
}
...
这里发生了2 次 string
创建;第一次创建实际string
对象,第二次为vector
. 演示
该push_back()
操作发生了数百万次,而我多次支付额外的分配费用,这对我来说毫无用处。
有没有办法优化这个?我愿意接受任何合适的改变。(不将此归类为过早优化,因为push_back()
在整个代码中发生了很多次)。