![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?8acaa2e)
C++標準ライブラリ map の使用法に関して質問させてください。
winXP, minGW環境最近でC++のプログラミングを始めました。
これまでperlを使っており、とくにハッシュを多用していました。
たとえば入力ファイルに区切りのついたデータがあり、区切りごとに個別のハッシュをつくり、ハッシュのリファレンスの配列を作成します。その後に配列にはいったすべてのリファレンスからハッシュを呼び出して、ハッシュのデータをつかって処理を行う などです。
*入力ファイルから区切りごとにハッシュ%hashを作成
$ref_of_hash = \%hash;
push (@array_hash, $ref_of_hash);
*ここまでは入力ファイルにしてループ処理
foreach $ref ( @array_hash){
%hash_again = %$ref;
*ここでハッシュをつかって処理を行う。
}
c++の標準ライブラリにmapがあり、ハッシュとは多少異なるとはいえ、私の使用用途には問題なかったので使い始めました。ですが、マップのポインタをつかった上記のような処理の方法がわからず困っています。
1)mapのポインタから mapの各要素を呼び出すにはどのようにしたらよいでしょうか?
2)mapのポインタをつかった場合
map<double,double>::iterator it;
for( it = my_map.begin(); it != my_map.end(); it ++){
//do something}
のようなイテレータを使う場合、.begin .engはポインタを使ってどのように記述すればよいでしょうか。
3)このようなmapのポインタを利用したソースが書かれているサイトなどがあれば教えていただけないでしょうか。
C++をはじめて間もないので用語の間違いや勘違いがあるかもしれませんが、よろしくお願いします。
No.1ベストアンサー
- 回答日時:
std::mapのキーにdoubleを使うのは賛成できませんが...
正攻法では、
template <typename Key, typename T>
struct f : std::unary_function<void, std::pair<void, std::pair<Key, Y> >
{
void operator()(std::pair<Key, T> const& arg)
{
// 何らかの処理
}
};
というファンクタを作っておいて..
std::map<double, double>* ptr = &my_map;
std::for_each(ptr->begin(), ptr->end(), f());
とします。
自分でループを書くのであれば、
std::map<double, double>* ptr = &my_map;
for (std::map<double, double>::const_iterator it = ptr->begin(), last = ptr->end(); it != last; ++it)
{
double key = it->first;
double value = it->second;
// 何らかの処理
}
でよいでしょう。
ありがとうございます。
ptr->begin()
でいけるわけですね。 ネットを検索してもなかなか解法がみつからず困っていたところです。早速試してみようと思います。
No.3
- 回答日時:
> 以下すっごい挙げ足とりなんですけど, for_each の呼び出しで f にテンプレートパラメータは不要なんでしたっけ>#1.
すみません。修正忘れです。
他にも細かい間違いがありますが、まあいいでしょう。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) pythonのmap、結果の利用は1度だけ? 5 2022/06/11 12:33
- Perl perlをバージョンアップしたら、今まで正常に動いていたプログラムが、エラーになってしまった 3 2022/10/05 15:44
- C言語・C++・C# 関数ポインタの高速化のメリット 7 2023/05/05 20:15
- C言語・C++・C# C言語プログラム変更 2 2022/12/21 15:03
- Google Maps Google mapの印刷 1 2022/10/12 21:32
- Android(アンドロイド) スマホでGoogle Mapを快適に使うためのセンサー 1 2022/04/12 11:19
- Google Maps google map経路検索で、進行方向とmapの向きを一致させたい 3 2022/04/10 14:20
- 英語 doがあるのとないのでどう違う? 34 2022/10/05 23:29
- C言語・C++・C# このプログラミング誰か教えてくれませんか 3 2022/05/13 17:27
- その他(コンピューター・テクノロジー) exFATの外付けSSDからパソコンのNTFSの内蔵ストレージにコピーした場合はコピーしたデータのハ 2 2023/08/09 19:51
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Perlのハッシュのリファレンス...
-
Perlでいうハッシュとはどのよ...
-
連想配列の評価
-
DoEventsが必要な理由について
-
GIFアニメをループさせたくない
-
VBAでの一時停止と再開の方法
-
UWSCに制限時間を付けたいです
-
perlで配列の要素が空なのを知...
-
Perl 文字列を配列に直す方法
-
VB.NETで素因数分解のプログラ...
-
Escキーを押すと、中断する時と...
-
流れ図(フローチャート)が分か...
-
Javaの質問です。 この問題の答...
-
C#の勉強を始めたばかりの者です。
-
.htaccessがループしてる?それ...
-
二次元配列における要素数のは...
-
WinAPI「MsgWaitForMultipleObj...
-
エクセルの当番表を作っていま...
-
UWSCの終了の仕方
-
perl 初等プログラミングについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ハッシュ検索はなぜ速い
-
文字列を変数名として扱う方法
-
チェックデジットについて
-
ハッシュのハッシュを実現したい。
-
まったく同じファイルのハッシ...
-
列挙型と連想配列の違いを教え...
-
重複ファイルを削除したいので...
-
*(アスタリスク)の意味
-
短いハッシュの作り方
-
英語でのシャープとコメの呼び...
-
ハッシュマーク以降のアドレス取得
-
一意(ユニーク)かつ、ソート...
-
Perlは戻り値で、ハッシュや配...
-
ハッシュリストって単にハッシ...
-
ActivePerl がハングアップ
-
mapのポインタ
-
多次元配列から重複を削除
-
文字数の短いユニークなID生成
-
Perlのハッシュ変数のソートに...
-
csvファイルのソート
おすすめ情報