c++ - 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;
}
我知道这个问题与向量有关,但它也可能与内存管理有关,因为程序会开始消耗大量内存并且永远不会退出。
解决方案
推荐阅读
- python-3.x - 根据其他列对 pandas 数据帧进行求和和规范化
- google-chrome - gmail帐户如何存储其他网站的密码
- javascript - messageReactionAdd 仅检测缓存的消息
- r - 如何执行点到栅格操作并在 R 中使用不同空间分辨率的栅格进行绘制?
- axios - axios 没有在任何请求中添加默认 baseUrl,即使它已设置
- apache-kafka-streams - kafka 流 - 加入分区主题
- excel - Excel获取列中的最后一个数据并从不同列返回值
- c# - 团结蹲伏
- html - 检查器窗口的 html 中的 ::marker 是什么意思?
- linux - 如何使用终端删除mac中子文件夹下的常用文件