0

Visual Studio C++2010を使用しています。

ヘッダーファイルGNode.hがあります。以下のスニペットです。

#ifndef GNODE_H
#define GNODE_H
#include <vector>

typedef vector<int> ADJNODE_LIST;

Error: vector is not a template2行目にエラーが発生しますvector

しかし、私がそのように追加std::するvectorと:

typedef std::vector<int> ADJNODE_LIST;

コンパイルエラーはありません。

<vector>ライブラリが見つからないようです。

誰かが理由を説明できますか?

4

2 に答える 2

3

ベクトルはstd名前空間に存在するためです。

次のように定義されていると考えることができます。

namespace std {
    template<typename T, ...>
    class vector {
        ...
    };
}

含めるファイルはと呼ばれvectorますが、タイプにアクセスするには、そのファイルをその名前空間で修飾する必要があります。std::vector<int>ここ::で、はスコープ演算子です。

于 2013-03-12T08:50:55.213 に答える
-5

可能ですが、名前空間と呼ばれるものに囲まれています。

名前空間の外部(プログラムなど)では、名前空間内の要素にアクセスできません

あなたが使用することができます

using namespace std;

または、std名前空間内のすべてを次のように付加しますstd::

于 2013-03-12T08:54:51.183 に答える