STL向量类每次调用push_back时都使用复制构造函数存储对象的副本。这会减慢程序吗?我可以使用自定义的链表类来处理指向对象的指针。虽然它没有STL的一些好处,但仍应该更快。
请看下面的代码:
#include <vector>
#include <iostream>
#include <cstring>
using namespace std;
class myclass
{
public:
char* text;
myclass(const char* val)
{
text = new char[10];
strcpy(text, val);
}
myclass(const myclass& v)
{
cout << "copy\n";
//copy data
}
};
int main()
{
vector<myclass> list;
myclass m1("first");
myclass m2("second");
cout << "adding first...";
list.push_back(m1);
cout << "adding second...";
list.push_back(m2);
cout << "returning...";
myclass& ret1 = list.at(0);
cout << ret1.text << endl;
return 0;
}
它的输出如下:
adding first...copy
adding second...copy
copy
输出显示在添加和检索值时都调用了拷贝构造函数。 当我们有更大的对象时,这是否会影响性能呢?
std::list<T>
即可。 - j_random_hacker