动态数组读取

Dynamic array - reading

本文关键字:读取 数组 动态      更新时间:2023-10-16
 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但是我需要使用Dynamic Array

你让你的生活不必要地复杂化了。以一种安全的方式自己管理内存分配/释放将是一个难题。更不用说您的代码还会受到内存泄漏的影响。

我也注意到你总是保存一对int s。您应该使用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';
    }
};

现场演示

考虑使用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;
        }
    }
};