动态数组 - 读取

时间:2014-05-19 18:52:25

标签: c++ c++11

 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,但我需要使用动态数组

2 个答案:

答案 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';
    }
};

Live demo

答案 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;
        }
    }
};