C ++中的字典

时间:2014-08-07 09:58:14

标签: c++ dictionary

我刚刚开始学习C ++,并且能够熟练使用Python编写代码。我想用C ++再次创建一个旧的python程序,这是一个混乱的单词。在Python程序中,您可以选择模式(简单,中等或硬)。除此之外,每个模式都有自己的字典,程序随机选择。与每个单词配对是一个提示,因此使用字典。

有人可以解释我将如何在C ++中执行此操作吗?

谢谢

PS。到目前为止我到这儿了,但我得到了错误

//Word Jumble - Ben
#include <iostream>
#include <cstdlib>
#include <map>
#include <string>
using namespace std;

int computer(){
    cout << "\nYOU ARE PLAYING AGAINST THE COMPUTER";
    cout << "COMPUTER IS JUBMBLING WORD...";
    system("PAUSE");
    system("CLS");
    map easy
    easy = {{"Ship","A large boat"}, {"Ladder","A Piece of Apparatus that helps you climb things"},{"Water","What the human body is mainly composed of"}};
int main(){
    cout << "\n\n               WELCOME TO WORD JUMBELE";
    cout << "\n                      BY BEN";
    computer()}

错误:

C:\Users\Ben\SkyDrive\Documents\C++\Word Jumble\Word Jumble.cpp:12:9: error: missing template arguments before 'easy'

C:\Users\Ben\SkyDrive\Documents\C++\Word Jumble\Word Jumble.cpp:12:9: error: expected ';' before 'easy'

C:\Users\Ben\SkyDrive\Documents\C++\Word Jumble\Word Jumble.cpp:17:15: error: expected '}' at end of input

3 个答案:

答案 0 :(得分:0)

正如第一个错误所示,map easy缺少模板参数。在C ++中,您需要指定地图所包含的类型。我想你想要的是map<string, string> easy


我还发现您在map easycomputer()之后错过了分号。 C ++中的所有变量定义和函数调用必须以分号结尾。


除此之外,你还错过computer()上的右大括号。

顺便说一下,computer()会返回int,因为return中没有computer()语句也会导致错误。您可以添加一个,但由于您没有使用任何返回值,您可能只想将int替换为void,这将不再需要返回语句。


我实际上必须复制你的代码并自己编译以找到所有错误。如果您没有尝试将代码格式化为Python,那就没有必要了。在C ++中,格式化此代码的更好方法如下:

int computer(){
    cout << "\nYOU ARE PLAYING AGAINST THE COMPUTER";
    cout << "COMPUTER IS JUBMBLING WORD...";
    system("PAUSE");
    system("CLS");
    map easy
    easy = {
        {"Ship","A large boat"},
        {"Ladder","A Piece of Apparatus that helps you climb things"},
        {"Water","What the human body is mainly composed of"}
    };

int main(){
    cout << "\n\n               WELCOME TO WORD JUMBELE";
    cout << "\n                      BY BEN";
    computer()
}

现在很明显缺少支具的位置。

答案 1 :(得分:0)

首先,map是所谓的模板类。这意味着您必须传递map<key_type, value_type>类型的具体类型,以指定编译器应生成代码的类型。请注意,C ++是严格类型化的语言。

为了填充地图,您应该使用:

concreteMap[key] = value 

更多相关信息:http://www.cplusplus.com/reference/map/map/

答案 2 :(得分:-1)

这个

map easy

首先,您需要指定map的值,例如映射&LT;串,串&GT;容易。

然后你可以使用

easy["abc"] = "efg";   //like this

我想你需要

string a[100][2] = {{"Ship","A large boat"}, {"Ladder","A Piece of Apparatus that helps you climb things"},{"Water","What the human body is mainly composed of"}};

map<string,string> easy;
for(int i=0; i<3; i++)
    easy[a[i][0] ] = a[i][1];

然后你可以像这样使用简单的[&#34; Ship&#34;]。