class Sesion
{
private:
int wymiar = 2;
int **tablica = new int *[wymiar];
int licznik = 0;
void save(int x, int y)
{
for (int i = 0; i < wymiar; i++)
tablica[i] = new int[wymiar];
tablica[0][licznik] = x;
tablica[1][licznik] = y;
licznik++;
}
void open()
{
for (int i = 0; i < licznik; i++)
{
cout << tablica[0][i] << endl;
}
}
}
我不知道如何阅读open()
中的值,因为我在那里得到了奇怪的数字。
在save()
中,一切都很完美。我必须将x和y保存在无限数组中,然后从中读取这些值。
我知道我可以使用Vector,但我需要使用动态数组
答案 0 :(得分:3)
你不必要地使你的生活变得复杂。以安全的方式自行管理内存分配/释放将成为PITA。更不用说您的代码也受到内存泄漏的影响。
我还注意到你总是在保存int
对。您应该使用std::pair
或自定义结构/类,而不是std::vector
。
以下是一个例子:
class Sesion {
private:
std::vector<std::pair<int, int>> tablica;
public:
void save(int x, int y) {
tablica.emplace_back(x, y);
}
void open() {
for (auto p : tablica)
std::cout << std::get<0>(p) << ',' << std::get<1>(p) << '\n';
}
};
答案 1 :(得分:0)
考虑使用std::vector
,例如
class Sesion
{
private:
struct Point { int x, y; };
std::vector<Point> points_;
public:
void save(int x, int y)
{
points_.push_back( Point{x, y} );
}
void open()
{
for ( Point const& point : points_ )
{
cout << point.x << " " << point.y << endl;
}
}
};