我想通過轉換我在java中編寫的一些程序來學習C++。一種是加密程序,它接受文本輸入並使其看起來像DNA(AGCTGTGCT ...)。我可以使用每個4個鹼基的256個密碼子加密64個字符。 (「A」=「TGGC」,「B」=「ATGC」...)在java中,我製作了一個hashmap<String, String[]>
,其中的密鑰是要加密的字符,並且該值是4個字符串的數組,其中每個字符串是隨機選擇一個密碼子來代替加密字符。是map <string,string []>可能在C++中嗎?
在C++中,我試圖用一個地圖做同樣的事情,但它給出了一個錯誤我只是不明白。這裏就是我盡力使密碼子表的代碼:
// iterate through the characters and select 4 codons from the list
for(int i = 0; i < 64; i++){
codonTable[charList[i]][0] = originalCodonList[4 * i];
codonTable[charList[i]][1] = originalCodonList[4 * i + 1];
codonTable[charList[i]][2] = originalCodonList[4 * i + 2];
codonTable[charList[i]][3] = originalCodonList[4 * i + 3];
}
}
是持有64個可編碼字符數組(他們是真正的字符串)和originalCodonList
是一個包含了256個密碼子字符串數組。我已經嘗試了幾種方法將4個密碼子分配給地圖中的字符串數組,但似乎沒有任何效果。這會產生最少的錯誤垃圾郵件。下面是我編譯時的輸出:
In file included from /usr/include/c++/4.6/map:61:0, from Genencrypt.cpp:4: /usr/include/c++/4.6/bits/stl_map.h: In member function ‘std::map<_Key, _Tp, _Compare, >_Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) >[with _Key = std::basic_string, _Tp = std::basic_string [4], _Compare = >std::less >, _Alloc = std::allocatorstd::basic_string, std::basic_string [4]> >, std::map<_Key, _Tp, _Compare, >_Alloc>::mapped_type = std::basic_string [4], std::map<_Key, _Tp, _Compare, >_Alloc>::key_type = std::basic_string]’: Genencrypt.cpp:63:25: instantiated from here /usr/include/c++/4.6/bits/stl_map.h:453:11: error: conversion from ‘int’ to non-scalar type >‘std::map, std::basic_string [4]>::mapped_type {aka >std::basic_string [4]}’ requested
當然谷歌告訴我,當我把它複製到谷歌時它太長了。我不是java的專家,我在java上比在C++上好得多。
TL; DR:我想在C++中map<string, string[]>
,是有可能,怎麼辦呢?
編輯:這是我如何固定它,我改變codonList從map<string. string[]>
到map<string, vector<string> >
和使用該代碼添加密碼
for(int i = 0; i < 64; i++){
codonTable[charList[i]].push_back(originalCodonList[4 * i]);
codonTable[charList[i]].push_back(originalCodonList[4 * i + 1]);
codonTable[charList[i]].push_back(originalCodonList[4 * i + 2]);
codonTable[charList[i]].push_back(originalCodonList[4 * i + 3]);
std::cout << "Working?" << std::endl;
}
我覺得OP是指關於C C++ – Anon
你的標題會談,關於C的問題本身++。它看起來像標題是錯誤的。 – juanchopanza
修正了它,謝謝 – user137