2015-10-20 46 views
-3

嘿傢伙我試圖編寫一個方法來創建名爲y_i的向量,其中我從1開始,並在變量名稱行結束以輸入矩陣。 我正在嘗試編寫它,以便它動態地向此代碼添加足夠的向量。形式向量y_1,向量y_2等向量C++中的變量創建方法

代碼如下。我的問題是我做對了嗎?我需要一個結構?一類?幫幫我!

#include <iostream> 
#include <vector> 
using namespace std; 
int i, rows; 
vector<vector<double> >matrix; 
void VectorCreation(int rows) 
{ 
    for (i = 1; i <= rows; i++) 
    { 
     new vector<double>; 
    } 
} 
int main() 
{ 
    cin >> rows; 
    VectorCreation(rows); 
    return 0; 
} 
+0

不要用全局變量開始,大部分的時間你不需要在現代C使用'new' ++(另外,你不會做任何事情*)。 – crashmstr

+1

_'新建矢量;這條線絕對沒有意義。你分配一個'矢量'(你不應該這麼做),並放棄結果。 –

+2

Oy ....從哪裏開始?除非你知道你在做什麼*,否則不要使用'new' *。除非你知道你在做什麼*,否則不要使用全局變量*。不要試圖試錯C++。 [獲取一本好書](http://stackoverflow.com/questions/388242)。 ;-)這就是說,你要找的是[文檔](http://www.cppreference.com)... – DevSolar

回答

1

您目前與new堆上分配一個std::vector但不要把它分配給任何如此分配的數據永久丟失。

我不會勸告使用new這只是使用堆棧分配:

#include <iostream> 
#include <vector> 
using namespace std; 
int rows; 
vector<vector<double> >matrix; 
void VectorCreation(int rows) 
{ 
    matrix.resize(rows); 
} 
int main() 
{ 
    cin >> rows; 
    VectorCreation(rows); 
    return 0; 
} 
+0

這就是爲什麼我要求幫助。對C++和所有人都是相對陌生的。謝謝。 –

1

首先

void VectorCreation(int rows) 
{ 
    for (i = 1; i <= rows; i++) 
    { 
     new vector<double>; 
    } 
} 

正在做什麼,但創建一個內存泄漏,你正在創造新的載體和然後讓指向它們的指針超出範圍,以便內存不再可訪問但正在被使用。

其次,如果你想創建一個二維矢量可以使用:

std::vector<std::vector<type>> vector_name(num_rows, std::vector<type>(num_cols, default_value)); 
+0

以及如何顯示2d矢量的元素? –

+0

@ChrisJabbour [這裏](http://stackoverflow.com/questions/26937550/two-dimensional-vector-printing)是如何打印2D矢量的例子。 – NathanOliver