#include <vector>
#include <iostream>
#include <algorithm>
class A
{
public:
int* p;
A() : p() {}
A(int _) : p(new int(_)) {}
A(const A& a) {
p = new int(*a.p);
}
virtual ~A() {
delete p;
}
};
void dump(const A& a)
{
std::cout << *a.p << std::endl;
}
int main()
{
std::vector<A> v;
v.push_back(A(1));
v.push_back(A(2));
v.push_back(A(3));
v.erase(v.begin());
std::for_each(v.begin(), v.end(), dump);
// Вывод в косоль:
// 2
// 94734286 (мусор)
// Хотя ожидалось
// 2
// 3
// Что случилось?
// Как исправить?
std::cin.get();
return 0;
}
md := MyData(data) // или md := (MyData)(data) что вроде одинаково
md.PrintDataEx()md := (MyData*)(&data)
Но не так давно, нужна была обработка реально больших объемов данных (для обычного ПК). Утилиты написанные на C лопатили их часами, притом это была малая толика того, что было у заказчика для полной обработки, там скорее всего речь шла о десятках часов или даже днях.