質問内容
インスタンスメソッドからインスタンス変数のオブジェクトへのアクセスをしようと思うのですが
これは値渡し(コピー)になってしまうのでしょうか?
showPrice(...) インスタンスメソッド内で productPrices (unordered_map<string, int>型) インスタンス変数にアクセスしています。
- inventory.h
c++
1class Inventory { 2 unordered_map<string, int> productPrices; 3 public: 4 void showPrice(string product); 5};
- inventory.cpp
c++
1#include <iostream> 2#include "inventory.h" 3 4void Inventory::showPrice(string product) { 5 auto itr = productPrices.find(product); // <---- この productPrices変数へのアクセスは値渡し? 6 if (itr != productPrices.end()) { // <---- これも 7 cout << "product : " << itr->first << "\n"; 8 cout << "price : " << itr->second << "\n"; 9 } 10}
productPrices変数はunordered_map型でして保存するデータ数も比較的多くなります.
よって値渡し(コピー)になるとパフォーマンス的にマズいので避けたいのですが unordered_map をポインタで宣言 unordered_map<string, int> *productPrices
するようなソースを見かけた記憶がないのでどうするのがベストなのかと・・・。
もしproductPricesへのアクセスが値渡し(コピー)になるのであれば、showPrice(...)内から参照もしくはポインタ渡しでアクセスするにはどうすればよいのでしょうか? 常套手段等あるのでしょうか.
どうぞ宜しくお願いいたします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/04/05 14:24