A 回答 (5件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
> 実体をコピーするにはどうしたらよいですか?
これを行うとなると、結局、文字列を保持するクラス(or 配列)を作ることになるので、アクセス速度という点では std::string を避ける意味合いは薄れると思います。
そして、文字定数として参照するだけなら実体をコピーする必要もなさそうです。
そもそも、std::string::c_str() は通常、先頭アドレスのポインタを返す程度の仕事を、inline で行っているだけなので(手元のg++等を見ても)、これを使ったからといってアクセスが劇的に遅くなるようなことはないですが…。
> このようになった方が高速にアクセスできると思うので、
> このようなデータで配列に入れる方法も知りたいです。
根拠はなんですか?多分、幻想(or 勘違い)だと思いますが。
配列に先頭アドレスを保持している時点で、アドレスの増分が一定でもアクセス速度は向上しません。むしろ、キャッシュのヒットを考えると、一般論では近いアドレスにロードされる方が高速になる可能性が高い(または誤差の範囲)ように思われます。
# 環境次第だと思いますが、後者が早い理由を思いつきません。
No.1
- 回答日時:
> vector<string>を使用せずpush_back("aaa")が使えるようなvector配列を用意することはできませんか?
単にpush_back("aaa")が使えるようにするだけであれば、std::vector<const char*>で十分ですが、文字列の実体をコピーするのなら、別の方法が必要です。
[]でなく*でできるのは気がつきませんでした。
char *str = "bbb";でstrcpy(str, "aaa");はできませんからね。
実体をコピーするにはどうしたらよいですか?
std::vector<const char*>でpush_back("aaa")ができましたが、"aaa"や"bbb"の文字列の先頭アドレスを配列にして高速でアクセスしたいと考えています。
vec[0]は"aaa"の先頭アドレスで値は100000
vec[1]の"bbb"の先頭アドレスで値は100200
vec[2]の"ccc"の先頭アドレスで値は100030
こういうものでなく、
vec[0]は"aaa"の先頭アドレスで値は100000
vec[1]の"bbb"の先頭アドレスで値は100100
vec[2]の"ccc"の先頭アドレスで値は100200
このようになった方が高速にアクセスできると思うので、このようなデータで配列に入れる方法も知りたいです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# このプログラミング誰か教えてください。 2 2022/04/22 18:48
- C言語・C++・C# このプログラミング誰か教えてください 9 2022/04/22 18:50
- ブルーレイ・プレーヤー・レコーダー BD-REについて教えてください。 3 2022/11/10 23:28
- フリーソフト Vector フリーソフト 卓上カレンダー Windows10での作動は? 2 2022/06/11 19:03
- ガスコンロ・IHクッキングヒーター・給湯器 コンテンツブロッカーについて 2 2023/05/17 09:43
- その他(言語学・言語) 「ベクトル」ってなんか抵抗ありませんか?「ヴェクトル」のほうがよくありませんか? 9 2023/01/01 10:50
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
- C言語・C++・C# C言語初心者 構造体 課題について 2 2023/03/10 19:48
- Perl perl このテキストファイルを簡単に配列に入れるには? 2 2022/04/27 20:24
- PHP 配列の値の更新方法について 1 2022/08/05 09:49
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ExcelVBAで質問です。離れた二...
-
C言語 配列の長さの上限
-
パイソンの
-
C言語で特定列だけを抽出して配...
-
アルファベットの配列を数字の...
-
C言語の配列のサイズ
-
配列を使わずに、変数名を動的...
-
Excel、VBAのユーザーフォーム...
-
本日までの累計を表示させたい!
-
メモリの初期値
-
【C言語】配列の中に配列を入れ...
-
構造体配列を引数とするDLL作成...
-
if文で「配列a[i]が小数ならば...
-
unsigned char の配列で途中で0...
-
配列の参照渡しで型が一致しま...
-
配列内の文字間を排他的論理和...
-
c言語乱数について
-
先頭アドレスとは何ですか?
-
【速いブラインドタッチ】手を...
-
構造体配列のポインタを引数に
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C言語 配列の長さの上限
-
配列を使わずに、変数名を動的...
-
配列で格納したものをmsgboxで...
-
配列の参照渡しで型が一致しま...
-
C# Listを使わずに2次元配列の...
-
VBで構造体の配列を関数に渡す...
-
複数の選択範囲の行番号を個別...
-
パイソンの
-
先頭アドレスとは何ですか?
-
【速いブラインドタッチ】手を...
-
C# 配列の変数宣言について。
-
C言語初心者 ポインタについて...
-
unsigned char配列への入力の仕方
-
テキストファイルから文字列を...
-
ExcelVBAで質問です。離れた二...
-
Redimした動的配列はEraseする...
-
C言語で特定列だけを抽出して配...
-
擬似コード 長さがmの配列でな...
-
メモリの初期値
-
C言語初心者 構造体 課題について
おすすめ情報