我是 C++ 新手,但有半年 Java SE/EE7 工作经验。
我想知道如何将 3 个值放入
vector<string>
。vector<string, string, string>
或只是 vector<string, string>
以避免使用 3 个向量。
vector<string> questions;
vector<string> answers;
vector<string> right_answer;
questions.push_back("Who is the manufacturer of Mustang?");
answers.push_back("1. Porche\n2. Ford \n3. Toyota");
right_answer.push_back("2");
questions.push_back("Who is the manufacturer of Corvette?");
answers.push_back("1. Porche\n2. Ford \n3. Toyota \n4. Chevrolette");
right_answer.push_back("4");
for (int i = 0; i < questions.size(); i++) {
println(questions[i]);
println(answers[i]);
if (readInput() == right_answer[i]) {
println("Good Answer.");
} else {
println("You lost. Do you want to retry? y/n");
if (readInput() == "n") {
break;
} else {
i--;
}
}
}
如果可能的话,我想使用
questions[i][0]
、questions[i][1]
、questions[i][3]
之类的东西。
您可以拥有一个
struct
并将其对象存储在 vector
中:
struct question
{
std::string title;
std::string choices;
std::string answer;
};
// ...
question q = {"This is a question", "Choice a\nChoice b", "Choice a"};
std::vector<question> questions;
questions.push_back(q);
然后你会使用
questions[0].title
或questions[0].answer
等
为什么不采用如下结构:
struct question_data {
std::string question;
std::string answers; // this should probably be a vector<string>
std::string correct_answer;
};
然后:
std::vector<question_data> questions;
...
for (int i = 0; i < questions.size(); i++) { // I would personally use iterator
println(questions[i].question);
println(questions[i].answers);
if (readInput() == questions[i].correct_answer) ...
}
你可以用现代 C++ 做你想做的事。
您可以使用如下元组:
std::vector<std::tuple<std::string, std::string>> vec;
std::tuple<std::string, std::string> some_tuple;
some_tuple = std::make_tuple("some", "strings");
vec.push_back(some_tuple);
您可以使用 std::tie 稍后阅读它。