2012-10-29 4 views
20

固定サイズのベクトルのベクトルを有するそれが有するすべての要素に1次元ベクトルを有するように、私はそれを初期化したいブースト固定サイズを有するベクトルのベクトルが

vector<vector<int> > v(10); 

を割り当てる初期化初期化された値(例えば1)。

あなたはどのようにそれを行うことを教えてもらえ

v= repeat(10,list_of(list_of(1))); 

を次のように私は、ブーストの割り当てを使用していると私はコンパイルエラーに

error: no matching function for call to ‘repeat(boost::assign_detail::generic_list<int>)’ 

を持っています。 ありがとうございます

答えて

27

しかし、あなたが必要なものを行います。

vector<vector<int> > v(10, vector<int>(10,1)); 

これをintの10個のベクターを含むベクターを作製し、各々は1intsを含む。

17

必要な動作にはboostを使用する必要はありません。以下は1の値と各vector<int>含む10int秒で、10vector<int>秒のvector作成します。これはboost::assignを使用していない

std::vector<std::vector<int>> v(10, std::vector<int>(10, 1)); 
+2

1。一息。人生は公正ではありません。 – dbliss

+0

間にスペースを入れずに '' ''、 '>'を持っているからです:p – krozaine

4

私はC++の新機能について説明しようとします。 verctors matのベクトルは、これが唯一の方法ではありません...もちろん

int n(5), m(8); 
vector<vector<int> > mat(n, vector<int>(m)); 

mat[0][0] =4; //direct assignment OR 

for (int i=0;i<n;++i) 
    for(int j=0;j<m;++j){ 
     mat[i][j] = rand() % 10; 
    } 

をあなたは[]演算子を使用して、ほぼ無償で直接その要素にアクセスすることができるという利点があります。また、要素を追加したり削除したりしない場合は、ポインタ以外のネイティブコンテナmat[]を使用することもできます。ここに私のfavの方法は、C++を使用しています:

int n(5), m(8); 
int *matrix[n]; 
for(int i=0;i<n;++i){ 
    matrix[i] = new int[m]; //allocating m elements of memory 
    for(int j=0;j<m;++j) matrix[i][j]= rand()%10; 
} 

この道を、あなたは#include <vector>を使用する必要はありません。うまくいけば、それはより明確です!

0
#include <vector> 
#include <iostream> 
using namespace std; 


int main(){ 
    int n; cin >> n; 
    vector<vector<int>> v(n); 
    //populate 
    for(int i=0; i<n; i++){ 
     for(int j=0; j<n; j++){ 
      int number; cin >> number; 
      v[i].push_back(number); 
     } 
    } 
    // display 
    for(int i=0; i<n; i++){ 
     for(int j=0; j<n; j++){ 
      cout << v[i][j] << " "; 
     } 
     cout << endl; 
    } 
} 

入力:

4 
11 12 13 14 
21 22 23 24 
31 32 33 34 
41 42 43 44 

出力:

これは最初の答えは、それが最良の答えだし、まだそれが受け入れ答えでも、ほとんどのアップは、投票でもない、投稿された
11 12 13 14 
21 22 23 24 
31 32 33 34 
41 42 43 44 
関連する問題