“错误:预期构造函数,析构函数或类型转换之前'('token'在memset调用的位置

时间:2016-11-29 17:06:14

标签: c++ g++

在上面的代码中,我在memset调用时遇到G ++错误,说error: expected constructor, destructor, or type conversion before '(' token。可能的原因是什么?

#include<iostream>
#include<stdlib.h>
#include<utility>
#include<algorithm>
#include<list>
#include<cstring>
#include<vector>
#include<algorithm>
using namespace std;

int visited[1000];
memset(visited,0,sizeof(visited)); 
^ //This is where the error points to.

void dfs(vector< list< pair<int,int> > > graph,int u)
{
    visited[u]=1;
    cout<<u<<" ";

    list< pair<int,int> >::iterator x=graph[u].begin();
    for(;x!=graph[u].end();x++)
        if(!visited[x->first])
            dfs(graph,x->first);
}

int main()
{
    int v,e;
    cout<<"Vertices,edges?\n";
    cin>>v>>e;
    vector< list< pair<int,int> > > graph(v+1);
    for(int i=1;i<=e;i++)
    {
        int source,dest,weight;
        cin>>source>>dest>>weight;
        graph[source].push_back(make_pair(dest,weight));
    }
    list< pair<int,int> >::iterator p;
    int i=1;
    while(i<=v)
    {
        p=graph[i].begin();
        for(;p!=graph[i].end();p++)
            cout<<i<<" "<<p->first<<" : weight is "<<p->second<<"\n";
        i++;
    }
    dfs(graph,1);cout<<"\n";
    return 0;
}

如果您能为我提供改进代码/编码实践的提示,那将会非常有用。谢谢!

1 个答案:

答案 0 :(得分:4)

与任何函数的情况一样,

std::memset只能在函数中调用。

如果你理解了我的意思,你就不能简单地在全球范围内调用它。&#34; global scope&#34;这让编译器感到困惑。

在您的特定情况下,您不需要memset调用,因为全局变量在C ++中已初始化为零。

还要考虑用C ++标题#include<stdlib.h>替换#include <cstdlib>