从三到万AND从万到三
这个问题的考虑源于CSDN网友的一个问题:
我需要一个结构体里有常量字符串数组,怎么定义呀? 谢谢
我给他的解答是:[从万到三]式的,或者说,由抽象----->具体的解决方案
[回复]其实你可以参考MSDN中WNDCLASS的定义,你的目标应该是尽可能简单和灵活,而不是越多越好
typedef struct _WNDCLASS {
UINT style;
WNDPROC lpfnWndProc;
int cbClsExtra;
int cbWndExtra;
HINSTANCE hInstance;
HICON hIcon;
HCURSOR hCursor;
HBRUSH hbrBackground;
LPCTSTR lpszMenuName;
LPCTSTR lpszClassName;
} WNDCLASS, *PWNDCLASS;
LPCTSTR lpszMenuName;
LPCTSTR lpszClassName;
这2个就是常量字符串
然后,我们在看一下[鸡刀杀鸡,牛刀杀牛]的回答方式:
#include <cstdlib>
#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;
typedef struct tagEnumString
{
int iType;
int iCurrValue;
const char *szArray[3];
tagEnumString()
{
szArray[0] = "Tom";
szArray[1] = "Pig";
szArray[2] = "Rose";
}
}SEnumString;
int main(int argc, char* argv[])
{
SEnumString EnumString;
const int iMax = 3;
for(int i = 0; i < iMax; i++)
{
EnumString.iType = i;
cout<<"iType: "<< EnumString.iType
<<" char Array:"<<EnumString.szArray[EnumString.iType]
<<endl;
}
system("PAUSE");
return 0;
}
--------------
输出结果:
iType: 0 char Array:Tom
iType: 1 char Array:Pig
iType: 2 char Array:Rose
请按任意键继续 . . .
------------------------------------------------
开发环境:Dev-C++ Version 4.9.9.2
=====================================================================
纵观古今,横览中外,人类发展的历史从来都是:从三到万,中国数学之所以近代没落就是因为口诀式的东西
就是所谓的[鸡刀杀鸡,牛刀杀牛],而西方近代科学研究者从来就不是这种思路,它们的思路是:
[多把鸡刀杀只牛,一把牛刀杀一大堆鸡,如果有把瑞士军刀我就能宰杀一切],看到了吧,按照最优化对方案进行
组合,看到了吧[从万到三]
事实上,世界上没有任何人能做到[从万到三],而这正应该是我们学习任何理论知识的时候应该持有的一种正确的学习态度,要能够从你自己的薄弱环节入手,先收集全部的(尽可能多的资料,每一个小的细节都不放过,包括各种变形形式);然后,进行合理的分类;第三,按照分类,从简单到复杂各个击破(在学习简单的内容的时候,要先[从万到三]先宏观的把握一下整个的脉络并找到这部分知识都被应用到了实际中到哪些方面,然后,看由最复杂到最简单需要怎么转变下就可以了;最后,才是[从三到万]的开始最简单分类的学习,要有严格的理论学习时间和实践时间,而且每天睡觉的时候都要想一想:今天我什么地方做的不好[采用全否定法:吾日三省吾身是不够的!!一定要省到开始新的学习或工作前的5~10分钟,是的:睡觉的时候都要想有没有更好的解决方案!])
时间的利用源于:
(1)适合你自己的学习顺序和读书顺序和实践顺序[适合你对你来说才是正确的] <广义:适者生存,不适者改>
(2)对自己的能力和要掌握的内容(或要挑战的工作or任务)的正确和认真的审视 <需要很好平衡+动态调整>
(3)合理的:量化的时间区间+量化的任务区间 <第2条如果过了,打击自信;如果太低,积极性发挥不足>