25
2012
10

vs2010中使用Nunit测试c#代码结果的正确性

http://www.nunit.org/index.php?p=download

25
2012
10

linux下练习 c++ 关联式容器multimap特性

multimap.cpp

/*
multimap特性
key可以重复
不支持下标访问
*/
#include<iostream>
#include<string>
#include "print.h"
#include<map>
using namespace std;
typedef pair<int,string>  pairmp;
typedef multimap<string,double> MS;
int main()
{
MS m;
m.insert(MS::value_type("t1",1000));
m.insert(MS::value_type("t1",1300));
m.insert(make_pair("t2",3000));
m.insert(MS::value_type("t1",1800));
m.insert(make_pair("t2",100000));
m.insert(MS::value_type("t1",1600));
print(m.begin(),m.end());
MS::iterator ib=m.begin(),ie;
MS m2;
while(ib!=m.end())
{
string name=ib->first;//first:K,second:V
ie=m.upper_bound(name);//同一个key的一个区别上界
double sum=0.0;
while(ib!=ie)
{
sum+=(ib++)->second;
}
m2.insert(make_pair(name,sum));//处理,并加入一个容量
}
print(m2.begin(),m2.end());
return 0;
}


25
2012
10

linux下练习 c++ 关联式容器map特性

map.cpp

/*  
map.cpp  
map特性
不允许key重复
key/value对
key可以当下标访问value,key不存在则插入新的key/value对,以0初始化
*/
#include<iostream>
#include<string>
#include "print.h"
#include<map>
using namespace std;
typedef pair<int,string>  pairmp;
#include<map>
int main()
{
map<int,string> mp;
mp.insert(pair<int,string>(1,"aaa"));
mp.insert(make_pair(5,"bbb"));//自动匹配类型,构造pair
mp.insert(map<int,string>::value_type(4,"fff"));//内部类型,也能自动构造相应的pair
mp.insert(make_pair(2,"hhh"));
mp.insert(make_pair(2,"hhh"));
mp[2]="hhh1";//有则修改
mp[3]="ddd";//无则插入
print(mp.begin(),mp.end());
return 0;
}


25
2012
10

linux下练习 c++ 关联式容器共性测试,使用

code:

/*
关联式容器共性:二叉查找树实现,自动根据关键字排序,自动平衡
  set<K>,multiset<K>,map<K,V>,multimap<K,V>
查找:.find(key) 失败返回.end()
统计:.count(key)
删除:.erase(key)
插入:.insert(element)
区间:.lower_bund(key) //取得关键字为key的第一个元素位置
 .upper_bound(key) //取得关键字为key的最后一个元素之后的位置
 .equal_range(key) 取得关键字为key的区间,返回pair
构造函数可用比较函数作为参数  bool func(K a,K b)
*/
#include<iostream>
#include<set>
#include<string>
using namespace std;
#include "print.h"
struct person
{
string name;
int age;
public:
person(const char* n,int a):name(n),age(a){}
};
bool operator<(const person& a,const person& b)
{
return a.age<b.age||(a.age==b.age&& a.name<b.name);//找的时候按这个找
}
ostream& operator<<(ostream& o,const person& x)
{
return o<<x.name<<':'<<x.age<<"  ";
}
int main()
{
multiset<person> mp;
mp.insert(person("ccc",16));
mp.insert(person("aaa",13));
mp.insert(person("aaa",13));
mp.insert(person("kkk",18));
mp.insert(person("fff",15));
mp.insert(person("eee",11));
mp.insert(person("jjj",16));
print(mp.begin(),mp.end());
multiset<person>::iterator it=mp.find(person("fff",15));
if(it==mp.end()) cout<<"not find!\n";
else
{
 cout<<"find:"<<*it
         <<" "<<mp.count(*it)<<"个\n";
}
person a("aaa",13);
cout<<a<<" "<<mp.count(a)<<"个\n";
cout<<"lower/upper bound方法:\n";
multiset<person>::iterator ibegin,iend;
ibegin=mp.lower_bound(a);
iend=mp.upper_bound(a);
print(ibegin,iend);
cout<<"pair方法:\n";
typedef multiset<person>::iterator myiter;//给长类型起个别名
pair<myiter,myiter> p=mp.equal_range(a);
print(p.first,p.second);
cout<<"删除后输出:\n";
mp.erase(person("kkk",18));//有多个就删除多个
print(mp.begin(),mp.end());
}


25
2012
10

测试用c#操作mysql

 

原始数据:

25
2012
10

今天学习使用mysql遇到的问题和解决办法

安装到最后出现问题,无响应,那么不要紧,前面的安装成功了,只是没配置。关闭之后,直接命令开启服务,再使用。

 

18
2012
10

linux下练习 c++ 类库中list的特性、关联式容器共性介绍

code:

/*
库模版中 list 特性:
双向链表
增删:.push_front(element),.pop_front(),.remove(element)
不支持下标访问
除去重复:.unique() 相邻的重复元素只保留一个
排序:.sort(),默认用'<'号比较,自定义类型要重载运算符
倒置:.reverse()
转移:.aplice(pos,list2),.aplice(pos,list2,pos2),
 .aplice(pos,list2,pos2_begin,pos2_end)  
归并:.merge(list2)
*/
#include<iostream>
using namespace std;
#include<list>
#include<cassert>
#include "print.h"
bool mult3(int x,int y)//模3的余数从小到大
{
x%=3;
y%=3;
return x<y;
}
int main()
{
int a[7]={3,5,5,8,5,1,6};
int b[5]={5,7,9,2,4};
list<int> li(a,a+7),li2(b,b+5);
print(li.begin(),li.end());
li.unique();//可自定义判断相等的函数
print(li.begin(),li.end());
li.sort();//排序
li.unique();//去重
print(li.begin(),li.end());
li.reverse();//倒序
print(li.begin(),li.end());
li.splice(li.begin(),li2);//转移
print(li.begin(),li.end());
assert(li2.empty());//判断是否为空,为假时才报错
li.remove(5);//删除值为5的所有元素
print(li.begin(),li.end());
li.sort();li.unique();//去重
print(li.begin(),li.end());
li2.push_back(3);li2.push_back(5);
li2.push_back(9);li2.push_back(10);
print(li2.begin(),li2.end());
li.merge(li2);//将li2合并到li中
print(li.begin(),li.end());
b[3]=6;
li2.assign(b,b+5);
print(li2.begin(),li2.end());
li2.sort(greater<int>());//用'>'排序,从大到小
print(li2.begin(),li2.end());
li2.sort(mult3);//用自写规则排序,从小到大
print(li2.begin(),li2.end());
return 0;
}


18
2012
10

linux下练习 c++ 容器的deque的特性

code:

/*
deque特性
下标:.operator[](i)不检查越界,.at(i) 
删除:.pop_front(),.pop_back()
*/
#include<iostream>
using namespace std;
#include<deque>
#include "print.h"
int main()
{
deque<char> dq;
dq.push_back('c');
dq.push_back('d');
dq.push_back('e');
dq.push_back('f');
print(dq.begin(),dq.end());
dq[1]='t';//把 d 改为 t
for(int i=0;i<dq.size();i++)
cout<<dq[i]<<' ';
cout<<endl;
dq.pop_back();//删除最后一个
dq.pop_front();//删除第一个
print(dq.begin(),dq.end());
return 0;
}


16
2012
10

C#练习Array.Sort函数列出所有的进程与模块

.Net Code:

using System;
using System.Collections.Generic;
using System.Text;
using System.Diagnostics;
using System.Collections;
namespace ICompare测试
{
    class Program
    {
        static void Main(string[] args)
        {
            Process[] allprocess = Process.GetProcesses();//所有运行的进程
            SortByProcessName cmpproname=new SortByProcessName();
            SortByModuleName cmpmodulename=new SortByModuleName();
            Array.Sort(allprocess, cmpproname);
            foreach (Process p in allprocess)
            {


15
2012
10

linux下练习 c++ 容器的vector的特性

//vector.cpp

/*
vector的特性
当前容量:.capacity()
约定容量:.reserve()
下标:.operator[](i) ,.at(i) 越界抛出异常
*/
#include<iostream>
using namespace std;
#include<vector>
#include<exception>
#include<typeinfo>
#include "print.h"
void print(const vector< vector<int> >& v)//相当于二维数组
{
for(int i=0;i<v.size();i++)
{
for(int j=0;j<v[i].size();j++)
cout<<v[i][j]<<' ';
cout<<endl;
}
}
int main()
{
vector<double> vt,vt2;//默认容量成倍增长,4,8,16……
for(int i=1;i<10;i++)
{
vt.push_back(i+0.2);
cout<<vt.size()<<'/'<<vt.capacity()<<' ';
}
cout<<endl;
vt2.reserve(9);//只分配这么多,不成倍增长
for(int i=1;i<10;i++)
{
vt2.push_back(i+0.3);
cout<<vt2.size()<<'/'<<vt2.capacity()<<' ';
}
cout<<endl;
vt.at(3)=30.50;//修改值
vt[4]=40.70;
try
{
for(int i=0;i<vt.size();i++)
cout<<vt.at(i)<<' ';
cout<<endl;
}
catch(exception& e)
{
cout<<"\n异常:"<<e.what()<<endl;
cout<<"类型:"<<typeid(e).name()<<endl;
}
int m=3,n=5;
vector< vector<int> > vvi(m,vector<int>(n));//二维vector
vvi.resize(m+3);
vvi[1].assign(9,3);
vvi[5].assign(4,5);
print(vvi);
}
/*
template <typename T>
void show(T a[],int n);
template <typename T>
void show(const vector<T>& vt);
*/