2017-09-11 4 views
0

コンストラクタ(C++ 98)のintペアのベクトルにデフォルト値(空の値)を与えたいと思います。私は次のことに沿って試してみましたが、(明らかに)うまくいきません。誰かが私を正しい方向に向けることができますか?intペアのベクトルのデフォルト値を空にするにはどうすればよいですか?

+2

ベクトルのデフォルト値。ペアは "空"をサポートしていません。これらのうちのどれが意味しているかはわかりません。あなたの質問ではっきりしてください。さらに、 'std :: vector ()>'は構造体ではなく、 'std :: vector >'とは異なる型を示します。 –

+0

私は何をしようとしているのでしょうか?コンストラクタのデフォルトとして「空の」ベクトルをどのように割り当てるのですか? – khalessi22

答えて

1
SomeClassName(
const int replace = 1, 
const std::vector<std::pair<int, int> > node = std::vector<std::pair<int, int>() >() 
); 

std::vector<std::pair<int, int>() >()機能何も取らないとstd::pair<int, int>を返すベクトルの値に初期化(空std::vector用)インスタンスです。単にペアのベクトルを取得するために、内側()を削除します。

const std::vector<std::pair<int, int> > node = std::vector<std::pair<int, int> >() 

はまた、ノイズが多いですので、typedefのを検討する必要があります:

typedef std::vector<std::pair<int, int> > Node; 
... 
const Node node = Node() 
1

あなたはそのコンストラクタを記述しようとしている場合入力としてvectorを受け入れ、あなたはその引数をオプションにしたい、その後、次のいずれか

  1. は2つのコンストラクタ、をとるものを定義しますとしない1:

    SomeClassName(
        const int replace = 1 
    ); 
    
    SomeClassName(
        const int replace, 
        const std::vector<std::pair<int, int> > &node 
    ); 
    
  2. が、これはあなたがすでにやろうとしているものですが、あなたの構文は次のとおりです(デフォルト値としてデフォルト・構築vectorvector引数を取る単一コンストラクタを定義します間違った):あなたは、コンストラクタの引数を与えない限り、作成時に要素を持たないと

    SomeClassName(
        const int replace = 1, 
        const std::vector<std::pair<int, int> > &node = std::vector<std::pair<int, int> >() 
    ); 
    
関連する問題