私はいくつかのC ++を学ぼうとしています。まず、コンソールへの出力とコンソールからの読み取りを処理するいくつかのメソッドを作成しました。コードでマークされている 2 つの大きな問題があり、参照によって渡された文字列の std::vector 内の値を操作/アクセスしています。
以下のメソッドは、ユーザーに尋ねる質問 (std 文字列) と、受け入れられると見なされるユーザーからの応答を含むベクター std 文字列を受け取ります。また、学習のために、ベクトル内の文字列にアクセスしてその値を変更したいと考えました。
std::string My_Namespace::My_Class::ask(std::string question, std::vector<std::string> *validInputs){
bool val = false;
std::string response;
while(!val){
//Ask and get a response
response = ask(question);
//Iterate through the acceptable responses looking for a match
for(unsigned int i = 0; i < validInputs->size(); i++){
if(response == validInputs->at(i)){
////1) Above condition always returns true/////
val = true;
break;
}
}
}
//////////2) does not print anything//////////
println(validInputs->at(0)); //note the println method is just cout << param << "\n" << std::endl
//Really I want to manipulate its value (not the pointer the actual value)
//So I'd want something analogous to validInputs.set(index, newVal); from java
///////////////////////////////////////////
}
追加の質問:
3) ベクトルで .at(index) を使用して値を取得していますが、代わりに [] を使用する必要があることを読みましたが、それがどのように見えるかわかりません (validInputs[i] はしません'コンパイルしないでください)。
4)ディープコピーは不要なので、上記のようにベクターへのポインターを渡すことをお勧めしますが、誰かがそれを確認できますか?
5) ループでは ++i の方が i++ よりも優れていると聞きましたが、本当ですか? なぜ?