我试图通过转换我在java中编写的一些程序来学习C++.一种是加密程序,它接受文本输入并使其看起来像DNA(AGCTGTGCT ...).我可以使用256个密码子(每个4个碱基)加密64个字符.("A"="TGGC","B"="ATGC"...)在java中,我创建一个hashmap<String, String[]>键,其中键是要加密的字符,值是4个字符串的数组,其中每个字符串是一个随机选择的密码子替换加密的字符.
在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];
}
}
Run Code Online (Sandbox Code Playgroud)
charList是包含64个可编码字符的数组(它们实际上是字符串),originalCodonList是一个包含256个密码子的字符串数组.我已经尝试了几种方法将4个密码子分配给地图中的字符串数组,但似乎没有任何效果.这会产生最少的错误垃圾邮件.这是我编译时的输出:
在/usr/include/c++/4.6/map:61:0中包含的文件中,来自Genencrypt.cpp:4:/usr/include/c++/4.6/bits/stl_map.h:在成员函数'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 …