分享知识

与大家一起分享知识

C++博客 首页 新随笔 联系 聚合 管理
  19 Posts :: 3 Stories :: 45 Comments :: 0 Trackbacks
re: 我的程序人生[未登录] 史传红 2007-01-24 14:00
楼主对软件领域的涉足很广泛,而且有点领域也很精深,是我学习的楷模啊。
re: 计算Int最大最小值 史传红 2006-12-04 09:24
很好。
re: 并行编程--MPI开发入门 史传红 2006-06-12 20:12
我现在也在搞这方面的研究,不过是在linux系统下,多多向你学习。
很不错。
re: 五一就要回家喽 史传红 2006-05-15 14:24
谢谢,我是吉林大学(朝阳校区)毕业的。
谢谢大家的祝福.我是安徽六安市霍邱县众兴乡洪岗村中心队人(够详细的吧,呵呵).
@小东
相信只要努力了,我们一定都会有所收获的.此外我也算是一个比较幸运的人而已.相信有很多朋友比我更努力,但是过得比我还艰难...
谢谢大家的鼓励,我会一直尽力努力下去的.
最好,就是你安装一个电子邮件服务器软件。这下,你想打多长时间,就打多长时间。
请问它和电子邮件服务器怎么联系上的?如何设置?谢谢.
原因不是*this不能转换成const vector3D&,而是常成员函数(double angle() const)不能调用 非 常成员函数(double dotP(const Vector3D& v1,const Vector3D& v2)),如果把dotp改成如下定义:double dotP(const Vector3D& v1,const Vector3D& v2) const.
问题就解决了.
re: 漫谈函数的返回值 史传红 2006-05-03 23:01
@<font color="#FF00FF" >Stone Jiang
希望是这样的.
re: 关于语句作用域 史传红 2006-05-03 10:30
是的,标准规定了for(int i=0;i<10;i++)中的i只在语句内有效,可见。
我觉得用string时间快的原因可能跟这句:char *pc2= new char[len+1];
有关。库在处理string时候可能有某种优化,使得处理时间快些。也就是不同的系统在优化 string str2=str; 的时候可能不一样,所以windows系统没有占到优势。
@flyingxu

由于我以前遇到这个问题没有解决,现在看了深入浅出MFC这本书,总结出来的,你能给出一个好的结构吗?我的意思是说把文档的数据在一个对话框中实时表现出来,谢谢。
re: c++程序员 常用工具集 史传红 2006-04-24 13:33
版本控制现在比较不错的是 svn.
@Stone Jiang
能把这篇文章贴出来吗?我打开连接发现是好多主题。谢谢。
@roa420
我在Visual C++ 6.0中编译的时候也出现过问题,我怀疑它对友元支持的不好。
建议你换一个编译器试试看。
re: 关于C++模板函数的问题 史传红 2006-04-12 14:11
原来是我和标准模板库的函数重名了。通过改成:

template <class T>
const T& my_max(const T& a,const T& b)
{
return a > b ? a : b;
}
const float f = my_max(1.5f,2.5f);
就没有问题了。
看到了楼主的这篇文章,我试着改了一下,如下:希望大家一起加入讨论。

#include <iostream>
using namespace std;

class Matrix
{
private:
int rows,columns;
int **pMatrix;
public:
Matrix(int rows = 3,int columns = 2);
Matrix(const Matrix &M);
~Matrix();
Matrix& operator=(const Matrix& M);
int GetRows() const;
int GetColumns() const;
void SetValue();
friend Matrix operator*(const Matrix& a,const Matrix& b);
friend ostream& operator<<(ostream& os,const Matrix& M);
};

int Matrix::GetRows() const { return rows;}
int Matrix::GetColumns() const { return columns;}

// 构造函数
Matrix::Matrix(int x,int y)
{
rows = x;
columns = y;
//有的时候为了考虑创建对象的效率,在使用的时候分配存储空间,而不在构造函数中分配
pMatrix = new int* [x];
for (int i = 0 ; i < x; i++ )
{
pMatrix[i] = new int[y];
for(int j = 0;j < y;j++) //初始化每个值为0
pMatrix[i][j] = 0;
}
}
// 析构函数
Matrix::~Matrix()
{
for (int i = 0 ;i < rows;i ++ )
delete[] pMatrix[i];
delete[] pMatrix;
}

// 赋值函数
Matrix& Matrix::operator=(const Matrix& M)
{
if(this != &M)
{
for (int ii = 0 ;ii < rows;ii++ )
if(pMatrix[ii])
delete[] pMatrix[ii];
if(pMatrix)
delete[] pMatrix;
rows = M.rows;
columns = M.columns;
//分配存储空间
pMatrix = new int* [rows];
for (int k = 0 ; k < rows; k++ )
pMatrix[k] = new int[columns];

for ( int i = 0 ; i < rows; i ++ )
for ( int j = 0 ; j < columns; j ++ )
pMatrix[i][j] = M.pMatrix[i][j];
}
return *this;
}
void Matrix::SetValue()
{
int i,j,value;
for ( i = 0 ; i < rows; i ++ )
{
for ( j = 0 ; j < columns; j ++ )
{
cout << " 第 " << i << " 行 " ;
cout << " 第 " << j << " 列: " ;
cin >> value;
cout << endl;
pMatrix[i][j] = value;
}
}
}
// 拷贝构造函数
Matrix::Matrix(const Matrix& M)
{
rows = M.rows;
columns = M.columns;
//分配存储空间
pMatrix = new int* [rows];
for (int k = 0 ; k < rows; k++ )
pMatrix[k] = new int[columns];

for ( int i = 0 ; i < rows; i ++ )
for ( int j = 0 ; j < columns; j ++ )
pMatrix[i][j] = M.pMatrix[i][j];
}

Matrix operator*(const Matrix& a,const Matrix& b)
{
if (a.columns == b.rows)
{
Matrix c(a.rows,b.columns);
for ( int i = 0 ;i < a.rows;i ++ )
{
for ( int j = 0 ;j < b.columns;j ++ )
{
for ( int columnIndex= 0 ;columnIndex < a.columns;columnIndex++ )
c.pMatrix[i][j] += a.pMatrix[i][columnIndex] * b.pMatrix[columnIndex][j];
}
}
return c;
}
else
return Matrix();
}

ostream& operator<<(ostream& os,const Matrix& M)
{
for (int i = 0;i < M.rows;i++ )
{
for (int j = 0;j < M.columns;j++ )
os << M.pMatrix[i][j] << " ";
os << endl;
}
return (os << endl);
}


// 主函数
void main()
{
Matrix Ma(3,2),Mb(2,2);
Ma.SetValue();
Mb.SetValue();
cout << Ma << endl;
cout << Mb << endl;

Matrix Mc = Ma * Mb;//拷贝构造函数
cout << Mc << endl;
Mc = Mb; //=运算符,即赋值函数
cout << Mb << endl;
}
re: C++跨平台开发方法/工具 史传红 2006-04-06 18:16
我觉得在一台机器上拥有两个系统,速度是相当慢的,我深有体会.我目前用的两种方法,觉得效率挺高:
1.用putty这个软件从windows登陆linux系统,然后在windows里面用UltraEdit编写源代码.通过putty在linux系统编译和执行.
2.用BVRDE这个软件就可以做到在windows下面做linux开发,它只是一个IDE,所用的文件,编译器和调试器等都在linux系统上面.下载网址:
http://bvrde.sourceforge.net/index.htm