У меня есть следующий код:
void foo()
{
vector<double> v(100,1); // line 1
// some code
v = vector<double>(200,2); // line 2
// some code
}
что случилось с вектором размера 100 после второй строки? Это очищается само по себе? Если ответ «да», как и когда он очищен?
Кстати, есть ли другие "простые и понятные" способы изменения вектора, как в строке 2? Я не хочу такие вещи, как
v.resize(200);
for (int i=0; i<200; i++) v[i] = 2;
Еще один вопрос. Что, если вектор является членом класса:
class A{
public:
vector<double> data;
A(int size, double value)
{
data = vector<double>(size,value);
}
};
A object(10,1);
// some code
object = A(20,2); // ** What happened to the old object.data? **
// some code