首先,閱讀其他的答案,然後也許重讀在一個良好的C++的書指針章。現在,除非你需要極高的速度,否則使用vector
的vector
的double
。用C++ 11(較新的C++標準),這是非常好的,可讀的,所以我張貼第一:
#include <iostream>
#include <vector>
void printArray(std::vector< std::vector<double> > & v) {
for (const auto & row : v){
for (const auto & value : row){
std::cout << value << " ";
}
std::cout << std::endl;
}
}
int main() {
int n;
std::cout<<"Please enter the length of your matrix : "<<std::endl;
std::cin>>n;
std::vector<std::vector<double>> y(n,std::vector<double>(n,0));
for (auto & row : y){
std::cout<<"Insert the elements of row :";
for (auto & value : row){
std::cin >> value;
}
}
printArray(y);
}
對於較舊的C++是這樣的:
void printArray(std::vector< std::vector<double> > & v) {
for (std::vector<std::vector<double> >::const_iterator it = v.begin(); it != v.end();it++){
for (std::vector<double>::const_iterator it2 = it->begin(); it2!= it->end();it2++) {
std::cout << (*it2) << " ";
}
std::cout << std::endl;
}
}
int main() {
int n;
std::cout<<"Please enter the length of your matrix : "<<std::endl;
std::cin>>n;
std::vector<std::vector<double> > y(n,std::vector<double>(n,0));
for (std::vector<std::vector<double> >::iterator it = y.begin(); it!= y.end();it++){
std::cout<<"Insert the elements of row :";
for (std::vector<double>::iterator it2 = it->begin(); it2!= it->end();it2++) {
std::cin >> (*it2);
}
}
printArray(y);
}
注意y(n,std::vector<double>(n,0))
手段,使n
載體,每個載體有n
零。您也可以使用y[1][2]
來獲取和設置值。如果您使用y.at(1).at(2),則可以進行適當的檢查,以便在讀取或寫入界限時收到異常。
@RyanGray如果數組不是固定大小(不是),那麼它必須是新的。當然,應該真正使用諸如'std :: vector'之類的結構。 – juanchopanza 2012-07-30 16:46:44
@RyanGray:使用'new []'是創建一個數組的合法方式,它與'new'不一樣。 – Rook 2012-07-30 16:46:50
你需要使用雙指針,你的數組需要被聲明爲int ** y = new int * [n] – user1084113 2012-07-30 16:47:25