工作之余抽点时间出来写写博文,希望对新接触的朋友有帮助。今天在这里和大家一起学习一下数据算法
1.描述:
我的类中须要存放strin类型的数据,
而且须要和数据连接,实时跟新该容器的数据。
2,我的思路:
起初:
我盘算用一个vector就能够啦~
后来:
我反对了,并非我觉得vecotr不好,正式因为我想的算法促使我选择不用vector。
3,算法:
起初:
我用了个很拙楼的算法:
假设vFrom是实时得到的数据(新的),vTo是我类中保存的数据(须要去更新的)。
我须要知道vTo中是否:增长(add), 增长(delete)
于是:(伪代码)
foreach in vFrom foreach in vTo 如果vTo中没有,则: add foreach in vTo foreach in vFrom 如果vFrom中没有,则: delete
委实汗颜!!!
后来:
我想用一个tmp数据来保存From和To的数据,然后只遍历一次,去除它们都有的成员,那么残余的分别是add和delete的数据啦~
意思是,我须要应用增删。
所以:
选择数据结构:list
4,贴个代码:
// STL_cmp.cpp : Defines the entry point for the console application. // #include "stdafx.h" //#include <map> //#include <vector> #include <list> #include <string> #include <iostream> using namespace std; int _tmain(int argc, _TCHAR* argv[]) { // lFrom模拟实时从数据得到的数据 // lTo模拟本地数据 list<string> lFrom, lTo; lFrom.push_back("1"); lFrom.push_back("2"); lFrom.push_back("3"); lFrom.push_back("4"); lTo.push_back("1"); lTo.push_back("3"); lTo.push_back("4"); lTo.push_back("5"); list<string> need_to_add = lFrom; list<string> need_to_delete = lTo; list<string>::iterator itAdd = need_to_add.begin(); list<string>::iterator itDel; for (; itAdd != need_to_add.end(); ) { for (itDel = need_to_delete.begin(); itDel != need_to_delete.end(); ) { if (*itAdd == *itDel) { itAdd = need_to_add.erase(itAdd); itDel = need_to_delete.erase(itDel); break; } else { itAdd++; } } itDel++; } need_to_add; need_to_delete; while (1); return 0; }
文章结束给大家分享下程序员的一些笑话语录:
自行车
一个程序员骑着一个很漂亮的自行车到了公司,另一个程序员看到了他,问 到,“你是从哪搞到的这么漂亮的车的?”
骑车的那个程序员说, “我刚从那边过来, 有一个漂亮的姑娘骑着这个车过来, 并停在我跟前,把衣服全脱了,然后对我说,‘你想要什么都可以’”。
另一个程序员马上说到, “你绝对做了一个正确的选择, 因为那姑娘的衣服你 并不一定穿得了”。
---------------------------------
原创文章 By
数据和算法
---------------------------------