Класс вектор 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
В выводе показано, что конструктор копирования вызывается оба раза при добавлении и получениизначение даже тогда.Влияет ли это на производительность, особенно если у нас большие объекты?