スマート ポインターを使用するために書き直したい次のコードがあります。宣言、メモリの割り当て、ダブル ポインターへのアクセスの適切な例を見つけるのに苦労しています。誰でも例を挙げてもらえますか? delete[] の代わりに delete を使用するため、shared_ptr を使用する方法ではないことを読みましたが、shared_array を使用する必要がありますか?
#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を最初に宣言する必要があります(クラスメンバーになります)