私は、DNA文字列のテキストファイルを取り込み、それらをkmerサブストリングに分割し、一意のサブストリングが何回ポップアップするかを数えるプログラムを持っています。私の唯一の問題は、そのようなテキストファイル、たとえば...それは文字列値「N」を認識し、ファイルにそれを無視したします順序付けられていないマップ/マップで単一の文字列値を無視する方法はありますか?
ACNTG
ACTG
ACTG
は、dna配列を3kmに分割し、したがって第1の整数に分割する。問題は、Nを無視して、Nを一意の文字列値に含めずに移動したいということです。出力は...
ACT、CTG、TGA ...などとなり、N値は無視されます。ここに私はその部分が含まれるべきと考えている私のコードの一部です:あなたはラインでミスを持っているよう
#include <fstream>
#include <iostream>
#include <string>
#include <unordered_map>
std::string kmer = "";
std::unordered_map<std::string, int > dna;
for(int i = 0; i< s.length() ; ++i){
int z= 0;
kmer = s.substr(z,k);
++z;
if (kmer.length() != k){
break;
}
//DONT UNDERSTAND WHY THIS WOULDNT WORK
if(!dna.find("N")) !=std::string::npos)){
dna[kmer]++;
}
}
for (std::unordered_map<std::string,int>::iterator it=dna.begin(); it!=dna.end(); ++it){
std::cout << it->first << " " << it->second << std::endl;
}
f.close();
return 0;
}
どのようにして、最初の '!'を条件で解析することさえできましたか? :D +1 それはかなり私を困惑させた。また、これらの文字列は、ユーザー定義のハッシュを求めています。 – Ap31
@ Ap31ありがとう!あなたがそれを提起するまで、私はそれを見たことがありませんでした。 Shortsightednessは時々報われます:-) –
あなたはまだ正しい答えを出すことができましたが、私はこの表現が何を意味するのか理解できませんでした。私は、ブラケットはあなたの現在の解決策ではまだ結構ではないが、D – Ap31