我有下面的代码,我想重写使用智能指针: 我很努力地找到任何体面的例子如何申报,分配内存并访问双指针。任何人都可以提供示例吗?我读过shared_ptr不是要走的路,因为它使用delete而不是delete [],是否需要使用shared_array?创建一个双指针(ptr到ptr)std :: pair与提升
#include <iostream>
#include <boost/shared_array.hpp>
#include <iomanip>
int main(int argc, char**argv) {
std::pair<int,float> **corrArray;
int rows=10;
int cols=5;
corrArray = new std::pair<int,float>*[rows];
for(int i=0; i<rows; i++) {
corrArray[i] = new std::pair<int,float>[cols];
}
for(int i=0; i<rows; i++) {
for(int j=0; j<cols; j++) {
corrArray[i][j].first = i+j;
std::cout << std::setw(3) << corrArray[i][j].first << " ";
}
std::cout << "\n";
}
for(int i=0; i<rows; i++) {
delete[] corrArray[i];
}
delete[] corrArray;
return 0;
}
编辑:corrArray必须先声明(这将是一个类成员)
“双指针”是指“指向指针的指针”,而不是“指向双指针的指针”,是的? – 2013-03-19 23:07:08
是的,我的意思是指针指针 – user2089851 2013-03-19 23:09:09
只是我的2美分:我会去写我自己的类为您的对的2d结构(包括适当的析构函数),或与'vector>> '。 –
us2012
2013-03-19 23:31:01