C++容易的泛型
2012-08-16 12:04
197 查看
比C++容易的泛型。
看看下面简单的例子:
Cpp代码
module testContainer;
import std.stdio;
import std.container;
void main(){
SList!int myList;
foreach(i;0..10){
myList.insert(i);
}
foreach(element;myList){
writeln(element);
}
}
现在来定义个User类,放入SList中:
Cpp代码
module freebird;
import std.string;
class User{
private:
string name;
public:
void setName(string argName){
name = argName;
}
string getName(){
return name;
}
}
main.d file:
module testContainer;
import std.stdio;
import std.container;
import std.format;
import freebird;
import std.conv;
void main(){
SList!User users;
foreach(i;0..10){
string part1 ="name";
string part2 = to!string(i);
string name = part1 ~ part2;
User user = new User();
user.setName(name);
users.insert(user);
}
foreach(curUser;users){
writeln(curUser.getName());
编写自己的模板,有一个Users类,内部管理了很多User对象。可以用在多线程和单线程环境下,因此接受一个模板策略类Lock。
main.d文件
Cpp代码
void main(){
alias UserTemplate!(MutexLock).Users UsersType;
UsersType users = new UsersType();
foreach(i;0..10){
string part1 ="name";
string part2 = to!string(i);
string name = part1 ~ part2;
User user = new User();
user.setName(name);
users.add(user);
}
foreach(curUser;users.getValues()){
writeln(curUser.getName());
}
}
users.d文件
Cpp代码
module freebird.users;
import std.container;
import freebird.user;
//Pass MutexLock if you are in multi-thread context
//Pass NoneLock if you are in single-thread context
template UserTemplate(Lock){
class Users{
private:
SList!User values;
Lock l;
public:
this(){
l = new Lock();
lock.d文件
Cpp代码
module freebird.lock;
import std.stdio;
class MutexLock{
public:
void lock(){
writeln("mutex lock");
}
void unlock(){
writeln("mutex unlock");
}
};
class NoneLock{
public:
void lock(){
writeln("nothing lock");
}
void unlock(){
writeln("nothing unlock");
}
}
看看下面简单的例子:
Cpp代码
module testContainer;
import std.stdio;
import std.container;
void main(){
SList!int myList;
foreach(i;0..10){
myList.insert(i);
}
foreach(element;myList){
writeln(element);
}
}
现在来定义个User类,放入SList中:
Cpp代码
module freebird;
import std.string;
class User{
private:
string name;
public:
void setName(string argName){
name = argName;
}
string getName(){
return name;
}
}
main.d file:
module testContainer;
import std.stdio;
import std.container;
import std.format;
import freebird;
import std.conv;
void main(){
SList!User users;
foreach(i;0..10){
string part1 ="name";
string part2 = to!string(i);
string name = part1 ~ part2;
User user = new User();
user.setName(name);
users.insert(user);
}
foreach(curUser;users){
writeln(curUser.getName());
编写自己的模板,有一个Users类,内部管理了很多User对象。可以用在多线程和单线程环境下,因此接受一个模板策略类Lock。
main.d文件
Cpp代码
void main(){
alias UserTemplate!(MutexLock).Users UsersType;
UsersType users = new UsersType();
foreach(i;0..10){
string part1 ="name";
string part2 = to!string(i);
string name = part1 ~ part2;
User user = new User();
user.setName(name);
users.add(user);
}
foreach(curUser;users.getValues()){
writeln(curUser.getName());
}
}
users.d文件
Cpp代码
module freebird.users;
import std.container;
import freebird.user;
//Pass MutexLock if you are in multi-thread context
//Pass NoneLock if you are in single-thread context
template UserTemplate(Lock){
class Users{
private:
SList!User values;
Lock l;
public:
this(){
l = new Lock();
lock.d文件
Cpp代码
module freebird.lock;
import std.stdio;
class MutexLock{
public:
void lock(){
writeln("mutex lock");
}
void unlock(){
writeln("mutex unlock");
}
};
class NoneLock{
public:
void lock(){
writeln("nothing lock");
}
void unlock(){
writeln("nothing unlock");
}
}
相关文章推荐
- C++源码分享(六):许可者模式泛型实现
- <@乌龟:>从c#到c++的一些容易出现的困惑(2)
- C++ 一些容易忽略的基本点
- C#不是C++ 之 泛型(Generic)
- C++编程人员容易犯的10个C#错误
- C++ 泛型程序设计 模板
- c++ 泛型编码01
- 8、泛型程序设计与c++标准模板库1、泛型程序设计的概念和术语
- 程序设计C++使大家容易陷入重复劳动
- 关于C++语法的一个容易出错的地方。
- LinuxC/C++编程基础(4) 基于泛型实现vector
- C++ 容易忽略的问题
- C++ 泛型基础
- 【C/C++】C语言中一些容易被人忽略的东西 之四 【不常见的位域】
- 数据结构--队列-泛型OC&C++混编-泛型编程
- C++ Primer 学习笔记_45_STL实践与分析(19)--泛型算法的结构
- C++ 泛型指针 auto_ptr
- 使用c/c++指针 初学者容易犯的几个错误
- C++学习笔记27——泛型算法之统计(accumate count)
- C/C++容易混淆的小知识点