首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

C语言定义时初始化数组解决思路

2012-04-02 
C语言定义时初始化数组定义如下数组C/C++ codeconst int INF 0x3f3f3fint vis[V_MAX] {0}/*是否已被

C语言定义时初始化数组
定义如下数组

C/C++ code
const int INF = 0x3f3f3f;int vis[V_MAX] = {0};   /*是否已被访问标志*/int dis[V_MAX] = {INF}; /*距离值*/

需要将dis的数组所有内容都初始化为INF,而不是通过调用memset来完成,该如何做

[解决办法]
用memset不是很好嘛?
否则只能int dis[V_MAX] = {INF, INF, INF...一直写下去了吧};

[解决办法]
下面的代码只是变相回答你1楼贴中的“不调用memset”来初始化,效率估计会比直接 memset 还要差
另外,你提交超时应该不是memset的问题,大部分是因为算法问题,建议再想想
C/C++ code
    const int INF = 0x3f3f3f;    int vis[V_MAX] = {0};        __asm    {        mov eax, V_MAX        mov ebx, 4        mul ebx        mov ecx, eax        mov eax, ebp        sub eax, 4        sub eax, ecx        mov ebx, INFprep:        sub eax, 4        mov dword ptr [eax], ebx        sub ecx, 4        jnz prep    }        int dis[V_MAX];
[解决办法]
用汇编语言吧
[解决办法]
用一个for循环就好了啊

[解决办法]
为啥跟memset纠结呢?先说说你的算法是什么呢?
[解决办法]
感觉是你使用队列实现 dijkstra 存在问题,是不是算法问题没仔细看
[解决办法]
探讨

现在有个问题是memset到底占不占执行时间啊,它是怎么初始化内存的

[解决办法]
memset();我想肯定是需要占用执行时间的。
memset(dis, INF, V_MAX*4);
[解决办法]
探讨

我在做POJ上的一道题3159,共有30000个顶点,和150000个边,使用memset在程序中会很大的降低程序是速度,每次提交总会出现time limit exceed,要肿么办,才可以加快执行速度

[解决办法]
像单个for不嵌套,一般不用考虑时间的,所以memset跟本不用考虑时间,或用一个for初始化也不用考虑时间的,肯定是其它地方for嵌套的问题
[解决办法]
问题不是memset
而是

register priority_queue<Node,vector<Node>,greater<Node> > que;

首先你这个队列是无法用register的。
另外,你的这个队列用的应该是标准的stl分配器,嘿嘿,消耗你cpu的不是memset,而是内存分配。
你可以尝试换一个内存池试试。
[解决办法]
static保证vis为全0
搜“stosd汇编指令”
[解决办法]
赞LZ啊, 牛
[解决办法]
就用memset啊

热点排行