예제 #1
0
int __attribute__((weak)) main()
{
    std::cout<<"\r\n--------start of ACAutomation demo--------\r\n";
    ACAutomation ac;
    for(int i=0;i<5;i++){
        ac.insert((uint8_t*)pattern[i],strlen(pattern[i]),i);
    }
    ac.build();
    ac.search(data,sizeof(data));
    std::cout<<"\r\n--------end of program---------\r\n";
}
예제 #2
0
int main(int argc, char **argv)
{
    std::map<char, char*> g_map;
    for (char i = 'a'; i < 'z' + 1; ++ i)
    {
        g_map[i] = new char;
        *(g_map[i]) = i;
    }
    //std::tr1::hash<char*> ptr_hash;
    ACAutomation<char> acm;
    std::string a = "abcd";
    std::string b = "abce";
    std::string d = "bcd";
    std::string needle = "abcd";
    std::vector<char *> pa, pb, pd, pneedle;
    for(size_t i = 0; i < a.size(); ++ i)
    {
        char c = a[i];
        pa.push_back(g_map[c]);
    }
    for(size_t i = 0; i < b.size(); ++ i)
    {
        char c = b[i];
        pb.push_back(g_map[c]);
    }
    for(size_t i = 0; i < d.size(); ++ i)
    {
        char c = d[i];
        pd.push_back(g_map[c]);
    }
    for(size_t i = 0; i < needle.size(); ++ i)
    {
        char c = needle[i];
        pneedle.push_back(g_map[c]);
    }
    acm.add(&pa);
    acm.add(&pb);
    acm.add(&pd);
    acm.build();
    std::vector< const std::vector<char *> *> match_patterns;
    int32_t ret = acm.search(&match_patterns, &pneedle);
    std::cout << ret << std::endl;
    for (std::vector<const std::vector<char*>* >::const_iterator it = match_patterns.begin(); it != match_patterns.end(); ++ it)
    {
        const std::vector<char *> *pattern = *it;
        for (std::vector<char*>::const_iterator subit = pattern->begin(); subit != pattern->end(); ++ subit)
        {
            std::cout << **subit;
        }
        std::cout << std::endl;
    }
}
int main(){
    ACAutomation ac;
    ac.reset();
    string patt[] = {
        "is", "sip", "is", "sis", "mississipp"
    };
    int n = 5;
    for(int i=0; i<n; ++i)
        ac.insert((char*)&patt[i][0]);
    ac.construct();
    cout<<ac.query("mississippi")<<endl;
    return 0;
}
예제 #4
0
int main(){
	ACAutomation ac;
	string str="";

	while(true){
		cin>>str;
		ac.insert(str);
		if(str=="end") break;
	}

	ac.buildACAutomation();
	
	cin>>str;
	cout<<str<<endl;
	cout<<ac.search(str);

	return 0;
}