首页 > 解决方案 > std::vectors 的未解决问题

问题描述

我是一名尝试 C++ 的 Java 程序员,我不习惯手动管理内存。

我写了一段代码,试图生成一个 sierpiński 三角形,它大致从 Java 移植到 C++。Java 代码有效,但其 C++ 等效代码无效:

#include <vector>
#include <string>
using namespace std;

int main() {
    long unsigned int n;
    cin >> n;
    std::vector<string> arr(1);
    arr.at(0) = "\\";
    for(long unsigned int i = 0; i < n; i++){
        int size = arr.size();
        arr.resize(size*2);
        for(int ii = 0; ii < size; ii++){
            string t = "";
            t.append(arr.at(ii));
            for(long unsigned int i2 = 0; i2 < size-sizeof(t); i2++){
                t.append(" ");
            }
            t.append(arr.at(ii));
            arr.at(size+ii) = t;
        }
    }
    for(long unsigned int i = 0; i < arr.size(); i++){
        cout << arr.at(i) << endl;
    }
    return 0;
}

我知道这个问题与向量有关,但它也可能与内存管理有关,因为程序会开始消耗大量内存并且永远不会退出。

标签: c++vectormemory-managementstdvector

解决方案


推荐阅读