c++ - 动态数组-读取

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

最佳答案

你让你的生活变得不必要地复杂化。以安全的方式自行管理内存分配/释放将成为 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

关于c++ - 动态数组-读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23745112/

相关文章:

c++ - 使用静态成员函数初始化初始化列表中的常量成员变量有什么问题吗?

c++ - QMetaObject::connectSlotsByName:没有匹配的信号

C++:在 Windows 中监视进程创建和终止

C++ 将类型参数包转换为索引参数包

c++ - 移动构造函数永远不会被调用

c++ - 获取函数参数个数

c++ - 没有用于调用可变参数包函数的匹配函数

c++ - 如何在 GCC 中使用 c++20 模块?

c++ - 将 JSON 日志记录宏转换为模板函数...代码中需要的参数名称

c++11 - 如何将64位整数拆分为2个32位整数?