教えて下さい。

以前の仕事では、JAVAを用いて小規模のプログラム
を作成していました。
その時に下記のクラスを用いてデータを内部で管理し
ていました。
 Vector データをツリー形式で管理
 hash  ハッシュ形式で管理
     例)
      タグ(キー部)とバリュー(値部)を組
がありました。
この度C#の開発をする事になりましたが、データの管
理方法が身の回りの書籍ではなく、ネットで調べた
限りでは、参考になるサイトがヒットしませんでし
た。

すみませんが、C#でデータを保持する方法を含めた
技術的な内容が掲載したサイトがありましたら、紹介
して下さい。
 
 

A 回答 (1件)

> hash  ハッシュ形式で管理


Hash はそのまんま、Hashクラスがあります。

> Vector データをツリー形式で管理

Vector ってツリー形式だっけ。
可変長配列としての Vector だったら、
C#ではArrayListかな。


>すみませんが、C#でデータを保持する方法を含めた
>技術的な内容が掲載したサイトがありましたら、紹介
>して下さい。

.NET Framework のヘルプでは不十分?
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
同等のクラスがあるのですね。
ArrayListは、気づきませんでした。
.NETをインストールしたのですが、ヘルプを使いこな
していませんでした。

もう少し勉強をします。

お礼日時:2003/10/28 10:00

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q携帯電話のデータ管理ソフトどれがいい?

携快電話とか携帯マスターとか色々データ管理用のソフトが売ってるようですが、どれがいいのか迷います。
写真は殆どとらないので、PC上でのデータの管理が簡単便利に出来ればいいです。
お薦めとその理由をお聞かせいただければ幸いです。

Aベストアンサー

市販品でご検討されているようですが、
DoCoMoのFOMAでしたら、ちょっとこちらもご一考の価値があるかもしれません。
『ドコモケータイdatalink』http://datalink.nttdocomo.co.jp/
↑DoCoMoが無償提供しています。市販品より機能は若干劣る面もあるかもしれませんが、必要十分な程度は満たしているかと。
また、ご利用の機種のメーカーからも同様の無料ソフトが公開されていることが多いようです。
これらソフトを使うためには、
『FOMA USB接続ケーブル』http://www.nttdocomo.co.jp/product/relate/usb_cable/index.html
が必要になりますが、DoCoMoショップで1,500円程度?で販売しています。

以上、FOMAのケースで記述いたしました。
au及びSoftbankはサイト見ましたが分かりませんでした。すみません。

QVectorのポインタが入ったvector

windows Vista sp1, Visual C++ 2008でC++の勉強をしています。
Vectorへのポインタが入ったvectorを使うプログラムを書いているのですがうまくいかず、困っています。
どういうプログラムかというと、
入力ファイルの">"という記号を区切りとして、その間にある各行をひとまとめのグループとしてvectorにいれます。
さらに各vectorのポインタをべつのvectorに入れます。 最終的に区切りの数だけvectorができ、入力ファイルを読み終わった後に
すべてのvectorを"各グループのポインタが入ったvector"からループ処理ですべて出力する、というものです。

/入力ファイル input.txt/
>
human
cat
dog
>
beetle
dragonfly
spider
>
salmon
saury
catfish
>

vector1には human cat dog
vector2にはbeetle dragonfly spider
vector3にはsalmon saury catfish
が入り、 別のvectorにそれぞれのvectorのポインタをいれ、 最後にこのvectorをつかって全ファイル内容を出力するというものです。
具体的に書くと、
">"の区切りごとの各行のstringを入れるvectorとしてeach_vector。 each_vectorのポインタを入れるvectorをvector_of_ptr_each_vectorとします。
">"を認識するごとに new で each_vectorの領域を確保し、そのポインタをvector_of_ptr_each_vectorに追加していき、">"のない行のstringを each_vectorに入れます。
ファイルの読み込みが終わった後でvector_of_ptr_each_vectorからイテレータを使って各vector(each_vector)の全要素をそれぞれ出力する、というものです。
以下のようにコードを書きました。

#include <fstream>
#include <string>
#include <vector>
#include <iostream>

using namespace std;

int main( )
{
ifstream ifs("input.txt");
string buf;
std::vector<string> each_vector;
std::vector<std::vector<string> *> vector_of_ptr_each_vector;


while(ifs && getline(ifs, buf)) {

if(buf[0] == '>'){
std::vector<string>* ptr_eachvector ;
ptr_eachvector = new std::vector<string>;
each_vector = *ptr_eachvector ;

vector_of_ptr_each_vector.push_back(ptr_eachvector) ;
}

each_vector.push_back(buf) ;
}



printf("\n output from vector of ptr of vector\n");


std::vector<std::vector<string> *>::iterator it_b = vector_of_ptr_each_vector.begin();
while( it_b != vector_of_ptr_each_vector.end() )
{
std::vector<string>::iterator it_c = it_b->begin();    //エラー1
while( it_c != it_b->end() ) //エラー2
{
cout << *it_c << endl;
++it_c;
}

++it_b;
}



return 0;
}




ですが、エラーでビルドされず、

std::vector<string>::iterator it_c = it_b->begin(); の行に関して
error C2839: invalid return type 'std::vector<_Ty> **' for overloaded 'operator ->'
error C2039: 'begin' : is not a member of 'std::_Vector_iterator<_Ty,_Alloc>'

while( it_c != it_b->end() )   の行に関して
error C2839: invalid return type 'std::vector<_Ty> **' for overloaded 'operator ->'
1> with
1> [
1> _Ty=std::string
1> ]

error C2039: 'end' : is not a member of 'std::_Vector_iterator<_Ty,_Alloc>'
1> with
1> [
1> _Ty=std::vector<std::string> ,
1> _Alloc=std::allocator<std::vector<std::string> >
1> ]

fatal error C1903: unable to recover from previous error(s); stopping compilation

というようなエラーが出ます。

vectorのポインタを入れたvectorの扱い、特にイテレータに関して問題があると思うのですが原因が分かりません。
また、new でのeach_vectorの領域確保の方法も怪しいという感じがします。
解決策、アドバイスありましたらよろしくお願いします。

windows Vista sp1, Visual C++ 2008でC++の勉強をしています。
Vectorへのポインタが入ったvectorを使うプログラムを書いているのですがうまくいかず、困っています。
どういうプログラムかというと、
入力ファイルの">"という記号を区切りとして、その間にある各行をひとまとめのグループとしてvectorにいれます。
さらに各vectorのポインタをべつのvectorに入れます。 最終的に区切りの数だけvectorができ、入力ファイルを読み終わった後に
すべてのvectorを"各グループのポインタが入ったvector"からル...続きを読む

Aベストアンサー

#include <fstream>
#include <string>
#include <vector>
#include <iostream>

using namespace std;

int main() {
 ifstream ifs("input.txt");
 string buf;
 std::vector<std::vector<string> *> vector_of_ptr_each_vector;
 while(ifs && getline(ifs, buf)) {
  std::vector<string>* ptr_eachvector ;
  if(buf[0] == '>'){
   ptr_eachvector = new std::vector<string>;
   vector_of_ptr_each_vector.push_back(ptr_eachvector) ;
  } else {
   ptr_eachvector->push_back(buf) ;
  }
 }

 cout << "\n output from vector of ptr of vector\n";

 std::vector<std::vector<string> *>::iterator it_b = vector_of_ptr_each_vector.begin();
 while( it_b != vector_of_ptr_each_vector.end() ) {
  std::vector<string>::iterator it_c = (*it_b)->begin();
  while( it_c != (*it_b)->end() ) {
   cout << '[' << *it_c << "] ";
   ++it_c;
  }
  cout << endl;
  ++it_b;
 }
 return 0;
}

#include <fstream>
#include <string>
#include <vector>
#include <iostream>

using namespace std;

int main() {
 ifstream ifs("input.txt");
 string buf;
 std::vector<std::vector<string> *> vector_of_ptr_each_vector;
 while(ifs && getline(ifs, buf)) {
  std::vector<string>* ptr_eachvector ;
  if(buf[0] == '>'){
   ptr_eachvector = new std::vector<string>;
   vector_of_ptr_each_vector.push_back(ptr_eachvector) ;
  } else {
   ptr_eachvecto...続きを読む

Qmacはパーティションを分けてデータ管理すべき?

macはパーティションを分けてデータ管理すべき?

windowsはプログラムファイルはCドライブ、データはDドライブに分けると使い易いです。
マックの場合はドライブがウィンドウズほど分かれてないような気がしますが、どういう風に管理していますか?そのままでも特に問題ないでしょうか?

Aベストアンサー

はじめまして
私は分ける必要は無いと思います,同じ様な事を思った事は有りますが
Finderのホームで見る限り整理する上で明確にフォルダで分けられてますし。

それよりもTimeMasine以外で大切なファイルを保存するための外付けHDD
またはMacProの様に複数HDDを搭載出来る機種なら,パーテーションより
HDDの追加で同様に整理する方が解りやすいと思います。

個人の使い勝手を考えると"コレが正解"と言うのは人それぞれ違って来るでしょう。

Q「vector< vector>からdouble*への

「vector< vector<double>>からdouble*への変換につきまして」
C++の行列計算のライブラリとして以下の関数を使うことになったのですが、
//matA*vecB=vecX
void CalcMatrix(int rows, double* matA, double* vecB, double* vecX);
この引数として
vector< vector<double>>
で定義した変数を渡す方法はありますでしょうか?
もし御座いましたらご教授御願い致します。

Aベストアンサー

じゃあ無理. 「1つの vector の中」なら要素のアドレスが連続することを保証しているが, 「複数の vector の中で要素がひとつながりになる」ことはだれも保証しない.

Q携帯のデータ管理ソフト

先日H゛からauのINFOBARにしました。
パソコンで住所録があるのでそれを携帯に取り込みたいのですが、良いソフトを紹介してください。
要望としては、
・電話帳管理(複数の電話登録も可能なもの)
・Eメールの管理
・着うた、カメラ画像などのデータ管理
ができるものが良いです。
ダウンロードしたデータをパソコンに取っておくことはできないのでしょうか?
よろしくお願いします!

Aベストアンサー

#2です。
あげた2つはネット上での評判は悪くないです。あとは「万能」でしょうか。ソ社のものはどうも・・。
ケータイ・リンクは素っ気無い画面ですが、アップデート対応などが早いです。電話帳やファイル帳(データフォルダ)は、名前を付けて別に保存・管理ができます。
MySync(Biz)は、操作が簡単みたいです。Outlookをお持ちであれば、そちらにcsvをインポートして転送できるかもしれません。(MySyncもアップデートは早い)
お試し版で確認されるといいかもしれません。
受信e-mailは、auの場合(H"もですが)、自動転送機能で、プロバイダのメアドに飛ばすと、PCのメールソフトにバックアップができます。
では!

Qstd::vectorのメモリ管理を自分でするには?

std::vectorのメモリ管理を自分でしたいですが、
いい情報が見つかりません。

どなたか、参考のサイトなど知りませんか?

検索してもなかなか良いのが見つからなくて、
困ってます。

Aベストアンサー

前回の質問のときにも回答しましたが、次のようにするのが一番簡単です。

template <class T, class Allocator = std::allocator<T> >
class my_vector : public std::vector<T, Allocator>
{
public:
 ~my_vector()
 {
  std::for_each(this->begin(), this->end(), &std::free);
 }
};

あまり汎用的な設計ではありませんが、用途を限定するならこれで十分かと思います。
(コンストラクタは適当に必要なものを定義してください)

Q健診結果のデータ管理について。

過去10年間の健診結果のデータ管理をExcelでしていたのですが、アクセスで管理しようと思っています。それでデータの移行で、Excelの項目と全く同じ項目名にしないと移行できないでしょうか?例えば「氏名」から「患者名」へ移行、「年齢」から「年」移行などです。また他に何か注意することがあれば教えてください。よろしくお願いいたします。

Aベストアンサー

>Excelの項目と全く同じ項目名にしないと移行できないでしょうか
Accessではフィールド名といいます
作りこんでしまってからフィールド名を変えるのは大事になりますが
レコードを取り込んですぐなら(他との関係がまだない状態なら)
好きなように変更できます

>また他に何か注意することがあれば教えてください。
AccessはデータベースExcelは表計算
データの扱い方が全く異なります
両者は全く異なる考え方をしなければならないソフトです

Excelからの転向者がよくやる間違いは
AccessでExcelのようにやろうとすることです
これはAccessの便利な機能の恩恵を受けられなくし
とんでもない面倒を招くだけの結果になります

Excelのことは忘れAccessの基本をきちんと抑えてから
作業にかかるほうが結果的には早道になりますよ

QVisual C#を用いたボタン押し処理について

Visual C#を用いたボタン押し処理について

Visual C#のWindowsアプリケーションについての質問です。
「ボタンA、ボタンB、ボタンC」ボタンを3つ作ります。
private void button1_Click(object sender, EventArgs e){}
このようなソースになるのですが、ボタンAを押したときにボタンB、ボタンCを押した処理を行いたいです。ボタンB、Cを
button2_Click(X,Y);
button3_Click(X,Y);
でロードするのはわかるのですが、XとYには何を入れればいいのでしょうか?
検索した結果、おそらくnullを入れてはいけないのはわかったのですが、何を入れればいいのかがわかりません。

>非静的イベントを発生させるときは、sender パラメーターとして null (Visual Basic の場合は Nothing) を渡さないでください。

よろしくお願いします。

Aベストアンサー

クリックイベントを起こすだけでいいなら
System.Windows.Forms.Buttton.PerformClick()メソッドを使うとか。

private void button1_Click(object sender, EventArgs e){
button2.PerformClick();
button3.PerformClick();
}

かな。

参考URL:http://msdn.microsoft.com/ja-jp/library/system.windows.forms.button.performclick(VS.80).aspx

Qデータ管理が簡単な体重計

データ管理が簡単な体重計でおすすめありますか?
予算は1万円以下、6~7千円くらいで。

自分だけしか使わないので、毎日乗るだけでデータが蓄積され過去数か月の体重計の推移がかんたんに計測できる体重計を調べているのですが、比較項目が多すぎでよくわかりません。

Aベストアンサー

このへんでいいでしょう。
http://www.healthcare.omron.co.jp/product/hbf/hbf-215f.html
値段は
http://kakaku.com/item/K0000392904/
機能としては単純なので高い物は不要です。

QC#を用いて描画する四角形の角を丸くする方法

教えて下さい。
書籍やインターネットで調べているのですが、四角形の角を丸く(ワードの図形描画にある「角丸四角」です。)したり面取り(日曜大工で角を落とすのとおなじ)にはどのようにしたら良いのでしょうか?
多角形は参考するのがあったのですが、「角」の加工について調べたのですが見当たりませんでした。

【四角形描画】
//Graphicsオブジェクトの作成
Graphics g = PictureBox1.CreateGraphics();
//Penオブジェクトの作成(幅1の黒色)
//(この場合はPenを作成せずに、Pens.Blackを使っても良い)
Pen p = new Pen(Color.Black, 1);
//(10,20,100,80)の長方形を描く
g.DrawRectangle(p, 10, 20, 100, 80);
//リソースを開放する
p.Dispose();
g.Dispose();

【四角形の一箇所の角を丸くする】
 →四角形の角の描画が残ってしまう。
//Graphicsオブジェクトの作成
Graphics g = PictureBox1.CreateGraphics();
//位置(10, 20)に100x80の四角を赤色で描く
g.DrawRectangle(Pens.Red, 10, 20, 100, 80);
//先に描いた四角に外接する楕円の一部
//(開始角度 0度、スイープ角度 90度)を黒で描く
g.DrawArc(Pens.Black, 10, 20, 100, 80, 0, 90);
//リソースを開放する
g.Dispose();

教えて下さい。
書籍やインターネットで調べているのですが、四角形の角を丸く(ワードの図形描画にある「角丸四角」です。)したり面取り(日曜大工で角を落とすのとおなじ)にはどのようにしたら良いのでしょうか?
多角形は参考するのがあったのですが、「角」の加工について調べたのですが見当たりませんでした。

【四角形描画】
//Graphicsオブジェクトの作成
Graphics g = PictureBox1.CreateGraphics();
//Penオブジェクトの作成(幅1の黒色)
//(この場合はPenを作成せずに、Pens.Blackを使っても...続きを読む

Aベストアンサー

>隅の扇形を描く前に、角を含む四角形で消去(背景色で描画)してはいかがでしょうか。

背景がビットマップとかで消したくない場合はNGですね。
パスを使って描画範囲を限定するのがいいかと。


WindowsAPIならRoundRect()で一発なんですけどね。
.NETの場合は、こんな感じで組み合わせればいいでしょう。

角の丸い四角形を描画します。
System.Drawing.Drawing2D.GraphicsPath.AddLines
System.Drawing.Pen.LineJoin = System.Drawing.Pen.LineJoin.Round
System.Drawing.Graphics.DrawPath
System.Drawing.Graphics.FillPath

参考URL:http://www.microsoft.com/japan/msdn/net/general/win32map.asp


人気Q&Aランキング

おすすめ情報