2016-04-22 2 views
-2

Я хочу, чтобы сравнить два вектора строкисравнить два вектора строки (символ)

vector <string> morse ={"A.-","B-...","C-.-.", "D-..", "E.", "F..-.", "G--.", "H....", "I.." ,"J.---", "K-.-", "L.-..", "M--" ,"N-." ,"O---" ,"P.--.", "Q--.-", "R.-.", "S...", "T-", "U..-", "V...-", "W.--" ,"X-..-" ,"Y-.--", "Z--.."}; 


vector<string> codeMorse (1); 
codeMorse ={".---.--.-.-.-.---...-.---."}; 

    if (morse[i][j]==codeMorse[k]){ //my problem here =error 


     } 

Может кто-нибудь мне помочь?

+0

IMHO Я бы не сохранил персонажа с кодом Морзе, а вместо этого использовал 'std :: pair' и разделил их. – NathanOliver

ответ

0

Ваш код имеет 2 проблемы:

  1. Вы не можете сделать 2-мерный вектор таким образом, ни вы даже пытались сделать это 2D.
  2. Вы писали код morse[i][j] без предварительного определения i и j.

Чтобы исправить выпуск 1 & 2:

Включить

#include <vector> 

Сделать вектор станд :: пары (s):

std::vector<std::pair<std::string, std::string>> morse; 

Это позволяет иметь пара строк. Чтобы добавить новый код Морзе, используйте:

morse.push_back(std::pair<std::string, std::string>("LETTER HERE", "MORSE CODE HERE")); 

Чтобы прочитать им, использовать это:

//read all via loop 
    for (int i = 0; i <= morse.size(); i++) { 
     std::cout << "Letter: " << morse[i].first << std::endl;   //.first access your first elemt of the pair 
     std::cout << "Morse Code: " << morse[i].second << std::endl; //.second to access the morse code 
    } 

ИЛИ использовать итераторы, если вы уже знаете их:

//read all via loop 
    for (auto i = morse.begin(); i != morse.end(); i++) { 
     std::cout << "Letter: " << i->first << std::endl;   //->first access your first elemt of the pair 
     std::cout << "Morse Code: " << i->second << std::endl;  //->second to access the morse code 
    } 

Конечно вы можете прочитать конкретные значения:

std::cout << morse[0].first << std::endl; //[] same use as the array's brackets 
std::cout << morse[0].second << std::endl; //same here