2014-09-13 2 views
1
#include <iostream> 

using namespace std; 

class item { 
    int size; 
    int value[30]; 
    char key[30][20]; 
    int n, k; 
    int index; 
    char* a[30], *b[30], search, remove; 

public: 


    void putdatavalue(void) { 
     for (int i = 0; i < size; i++) { 
      cout << value[i] << "," 
       << "\n"; 
     } 
    } 

    void display(void) { 
     for (int i = 0; i < size; i++) { 
      cout << "(" << key[i] << "," << value[i] << ")" 
       << "\n"; 
     } 
    } 


}; 

void item::getdata(void) { 
    cout << "entr size\n"; 
    cin >> size; 
    for (int i = 0; i < size; i++) { 
     cout << "entr key\n"; 
     cin >> key[i]; 
     cout << "entr value\n"; 
     cin >> value[i]; 
    } 
    cout << "chk whether keys are different \n"; 
    for (int i = 0; i < size; i++) { 
     a[i] = key[i]; 
     b[i] = key[i + 1]; 
     if (*a[i] == *b[i]) { 
      cout << "key" << i << "and key" << i + 1 << "are same\n"; 
      cout << "re-entr key\n"; 
      cin >> key[i + 1]; 
     } else { 
      cout << "key[" << i << "] and key[" << i + 1 << "] are diff\n"; 
     } 
    } 
} 

int main() { 

    item obj1; 
    obj1.getdata(); 
    int m; 
    do { 
     cout << "choose ur option and enter appropriate no" 
      << "\n"; 

     cout << "\n1 : display keys \n"; 
     cout << "\n2 : display value \n"; 
     cout << "\n3 : display key-value pair \n"; 
     cout << "\n4 : add a key-value pair \n"; 
     cout << "\n5 : remove a key-value pair \n"; 
     cout << "\n6 : search for key and its value \n"; 
     cout << "\n7 : quit \n"; 
     cin >> m; 

     switch (m) { 

      break; 

      case 1: { 
       obj1.putdatakey(); 
      } break; 
      case 2: { 
       obj1.putdatavalue(); 
      } break; 
      case 3: { 
       obj1.display(); 
      } break; 

      case 7: 
       break; 

      default: 
       cout << "error in input \n"; 
     } 
    } while (m != 7); 
    return 0; 
} 

Я полагаю, чтобы создать словарь key-value пара в C++ со следующими функциями: клавиш дисплея, значение, дисплей пара ключа-значения, добавьте кнопочный значение, удалите пару «ключ-значение», узнайте, присутствует ли ключ и верните значение.создать словарь ключевых пар значений в C++

Должно быть возможным, чтобы словарь был пустым.

Вы должны перегрузить operator+, чтобы сделать союз двух словарей, и если словари содержат один и тот же ключ, выведите сообщение об ошибке.

Мой учитель попросил нас не использовать strings и vectors поэтому я использовал массивы я застрял с функцией профсоюза и не знают, как это сделать. Plz помогите мне.

+0

Если вам разрешено использовать 'std :: map' ... tada! – OMGtechy

+5

_ «Мой учитель попросил нас не использовать строки и векторы» _ - Вы должны попросить возмещение. –

+0

@CaptainObvlious это может быть просто заставить их задуматься о том, что происходит под капотом, и реализовать такие инструменты для обучения. Хотя я признаю, что в этом примере это кажется странным. – OMGtechy

ответ

2

мой учитель просил не использовать строки и векторы таким образом я использовал массивы

Если нет никаких ограничений, то я хотел бы использовать std::map.

С ограничением, я хотел бы использовать бинарное дерево поиска со следующей ключевой структурой

struct BstNode { 
    int  key_;  // 'int' or some other appropriate 
    int  value_; // - do - 
    BstNode * left_; 
    BstNode * right_; 
}; 
0

Как сказал @Arun, использовать бинарное дерево поиска для словаря.

Результатом объединения является все, что есть в обоих словарях.

Самый простой способ состоит в траверсе другой словарь, узла к узлу, вставляя пары другого словаря в этот словаре. Обновите свой способ , чтобы не допускать дублирования.

1

Как уже указывалось ранее, карта была бы лучшим проспектом, учитывая, что ваш учитель просит пары ключ-значение. Поскольку в спецификациях указано, что вам в основном не разрешено использовать какие-либо встроенные библиотеки, простой поиск Google для how maps are implemented in c++ вернул ссылку на pdf "Implementing Maps".

Поскольку карта содержит уникальные значения ключа, она математически определяется как Set. Посмотрите, как работает профсоюз в наборе.

Когда дело доходит до перегрузки operator+, другой поиск Google дал "9.2 — Overloading the arithmetic operators".

Добро пожаловать в научную часть Информатики!

Смежные вопросы