よろしくお願いします。
構造体、tagX 型を持つような、二次元のvectorはどのようにして、作成すればいいでし
ょうか。
このように考えたのですが、宣言の仕方も怪しいものです。
正しい、宣言の仕方と、データの挿入方法、取り出し方法をご教授願えないでしょうか。
#include <vector>
#include <iostream>
using namespace std;
typedef struct {
int x;
int y;
} tagX;
class CTagTest {
tagX tx;
public:
vector<tagX > tagx[10];
vector<tagX >::iterator it[10];
};
int main()
{
return 0;
}
環境
VS10 Ex
どんなのが欲しいかによりますね。
vectorを10個欲しいならそれでいい。
あるいは array<vector<tagX>> とか。
タテ/ヨコ共に可変長なら vector<vector<tagX>> ですが。
どっちにしろ iteratorを配列で持っても意味ないと思う。
挿入操作のたびに無効になるかもしんないから。
επιστημη さんお世話になります。
そうですか、間違っていなかったんですんか・・・
そこで、配列を
vector<tagX > tagx[10];
このように宣言するとして、値を代入しようと、下記のように目論んだのですが、代入さ
れていません。
間違いを指摘して頂けないでしょうか。
#include <vector>
#include <iostream>
using namespace std;
typedef struct {
int x;
int y;
} tagX;
class CTagTest {
public:
vector<tagX > tagx[10];
};
int main()
{
CTagTest ctt;
tagX tx;
/* 入力 */
for( int i = 0; i < 10; i++ ) {
tx.x = i; tx.y = i + 1;
ctt.tagx[i].push_back(tx);
}
/* 出力 */
for( int i = 0; i < 10; i++ ) {
//目論見ではこれで、OUT PUT できるつもりだっが使い方が間違ってい
ます。
//out << ctt.tagx[i].x << endl;
//cout <<ctt.tagx[i].y << endl;
}
return 0;
}
お世話になります。
tagX 型の配列タテ5×ヨコ10を操作するのに、こんな風にやって見ましたがおかしく無い
でしょうか?
それからεπιστημη さんに掲示していただいた
>>タテ/ヨコ共に可変長なら vector<vector<tagX>> ですが。
これはどのように使ったらいいのでしょうか?
よろしくお願いします。
#include <vector>
#include <iostream>
using namespace std;
typedef struct {
int x;
int y;
} tagX;
class CTagTest {
public:
vector<tagX > tagx[10];
vector<vector<tagX> > v;
};
int main()
{
CTagTest ctt;
tagX tx;
/* 入力 */
for( int i = 0; i < 10; i++ ) {
tx.x = 1; tx.y = 10;
ctt.tagx[0].push_back(tx);
tx.x = 2; tx.y = 200;
ctt.tagx[1].push_back(tx);
tx.x = 3; tx.y = 300;
ctt.tagx[2].push_back(tx);
tx.x = 4; tx.y = 400;
ctt.tagx[3].push_back(tx);
tx.x = 5; tx.y = 500;
ctt.tagx[4].push_back(tx);
}
/* 出力 */
vector<tagX >::iterator it[5];
it[0] = ctt.tagx[0].begin();
it[1] = ctt.tagx[1].begin();
it[2] = ctt.tagx[2].begin();
it[3] = ctt.tagx[3].begin();
it[4] = ctt.tagx[4].begin();
for( int i = 0; i < 10; i++ ) {
cout << it[0]->x << << it[0]->y <<
endl;
cout << it[1]->x << << it[1]->y <<
endl;
cout << it[2]->x << << it[2]->y <<
endl;
cout << it[3]->x << << it[3]->y <<
endl;
cout << it[4]->x << << it[4]->y <<
endl;
}
return 0;
}
> /* 出力 */
> for( int i = 0; i < 10; i++ ) {
> //目論見ではこれで、OUT PUT できるつもりだっが使い方が間違っています。
> //out << ctt.tagx[i].x << endl;
> //cout <<ctt.tagx[i].y << endl;
> }
/* 出力 */
for( int i = 0; i < 10; i++ ) {
for ( vector<tagX>::iterator iter = ctt.tagx[i].begin();
iter != ctt.tagx[i].end();
++iter ) {
cout << iter->x << ',' << iter->y << ' ';
}
cout << endl;
}
>> タテ/ヨコ共に可変長なら vector<vector<tagX>> ですが。
> これはどのように使ったらいいのでしょうか?
#include <vector>
#include <iostream>
#include <iomanip>
using namespace std;
struct tagX {
int x;
int y;
}
;
/*
* 0,0 ~ 9,9 の和・積
*/
int main() {
vector<vector<tagX>> v;
tagX tx;
/* 入力 */
for ( int i = 0; i < 10; ++i ) {
vector<tagX> row;
for ( int j = 0; j < 10; ++j ) {
tx.x = i+j; tx.y = i*j;
row.push_back(tx);
}
v.push_back(row);
}
/* 出力 */
for ( size_t x = 0; x < v.size(); ++x ) {
for ( size_t y = 0; y < v[x].size(); ++y ) {
cout << setw(2) << v[x][y].x << ':'
<< setw(2) << v[x][y].y << ;
}
cout << endl;
}
}
επιστημη さん大変お世話になります。
ありがとうございました。