生成多二元数组而不是 COUT
generate multidimensinal array instead of cout
我有这个主要函数,我想从中获取一个多维数组来生成图形而不是cout
。int main(){
zoro z;
std:ifstream k("ggg.grf");
z.getfromstream(k);
for(int i =0 ; i < z.nnodes; i++){
edge_iteratore s = z.begin(i);
while(s != z.end(i)){
std:cout << "(" << (*s).height << "," << (*s).weight << ")" << std::endl;
++s;
}
}
return 0;
}
我试图让 std::out 到一个函数来生成一个多维数组所以我实现了这个函数来获取一个数组,
int createarr(height,width){
int** ary = new int*[height];
for(int i = 0; i < height; ++i)
ary[i] = new int[weight];
}
但是没有任何效果,我如何返回一个多维数组以在另一个函数调用中使用它,而不是将其输出到屏幕上。
如果height
和weight
是您在编译时知道constexpr
值,请声明std::array<<std::array<int>, weight>, height>
. 这为您提供了参考位置。 如果它们是您在运行时计算的值或可能发生变化的值,请使用 vector<vector<int>>(height)
并初始化每一行。 然后编译器负责为您释放内存。 如果只有一个是固定的,你也可以做一个数组的向量或一个向量数组。
不幸的是,由于main()
遗留char** argv
接口,每个初学者C++程序员都认为这就是你做二维数组的方式。 像这样的参差不齐的阵列几乎从来都不是你真正想要的。 但是,如果您这样做,请使用std::vector
为您管理内存。
所写createarr()
的问题在于它不返回任何数组指针,但 RAII 更有可能是您想要的。 如果你确实有一个稀疏矩阵可以从粗糙性中受益,你可以使用压缩稀疏行这样的格式。
您需要返回指向所创建数组的指针。
但是你需要以某种方式处理这样一个事实,即这是动态分配的内存,即,你需要在完成后释放它。
你还需要以某种方式封装尺寸,这意味着它需要是一个结构体。
当你终于厌倦了处理内存泄漏,并理解指针是如何工作的,像其他人说的那样使用 std::vector。
同时,不要在没有先了解基础知识的情况下尝试在 C 中实现复杂的算法。首先,认真复习指针和数组的实际工作原理。
- Mongodb c++驱动程序:如何查询元素的数组
- 将数组的地址分配给变量并删除
- 从C++本机插件更新Vector3数组
- lambda参数转换为constexpr技巧,然后获取带链接的数组
- 寻找C++中数组和cout交互的解决方案
- 长度为 20 的 Cout'ing 数组输出 23 个字符
- 生成多二元数组而不是 COUT
- "我该如何展示cout<<"发烧";因为我不熟悉字符串数组,它也卡在选择部分?
- 十六进制数组 cout 到文本文件失败
- 将字符串添加到2D数组并显示COUT消息(没有错误消息?)的错误
- C++11 为什么 cout 从布尔数组打印大整数
- 带有上限和下限的C++Cout数组值
- 在cout语句中连接数组大小
- 数组中的cout元素错误,错误
- 我如何传递一个布尔数组或Unsigned Char*到cout
- Std::cout不能正确打印由unsigned char数组的reinterpret_cast创建的Std::stri
- 使用cout将数组和字符打印到屏幕时出现意外结果
- 将字符数组的元素转换为整数,并使用cout打印
- 为什么我不能使用 cout 在 C++ 中打印字符串值数组?
- 基于范围的for循环错误地输出了具有cout的数组元素