C ++ Vector类作为其他类的成员

时间:2009-10-13 21:50:50

标签: c++ vector

请注意这个代码会给我带来很多错误:

//Neuron.h File
#ifndef Neuron_h
#define Neuron_h
#include "vector"
class Neuron
{
private:
 vector<double>lstWeights;
public:
 vector<double> GetWeight();

};
#endif

//Neuron.cpp File
#include "Neuron.h"
vector<double> Neuron::GetWeight()
{
 return lstWeights;
}

有人可以告诉我它有什么问题吗?

5 个答案:

答案 0 :(得分:16)

这是:

#include <vector>

你使用尖括号,因为它是standard library,“”的一部分,只是让编译器首先在其他目录中查找,这是不必要的慢。它位于名称空间std

std::vector<double>

您需要在正确的命名空间中限定矢量:

class Neuron
{
private:
 std::vector<double>lstWeights;
public:
 std::vector<double> GetWeight();

};

std::vector<double> Neuron::GetWeight()

使用typedef更简单:

class Neuron
{
public:
    typedef std::vector<double> container_type;

    const container_type& GetWeight(); // return by reference to avoid
                                       // unnecessary copying

private: // most agree private should be at bottom
    container_type lstWeights;
};

const Neuron::container_type& Neuron::GetWeight()
{
 return lstWeights;
}

另外,不要忘记成为const-correct

const container_type& GetWeight() const; // const because GetWeight does
                                         // not modify the class

答案 1 :(得分:2)

首先,#include <vector>。注意尖括号。

其次,它是'std :: vector',而不仅仅是'vector'(或者使用'using'指令)。

第三,不要按值返回向量。这很重,通常是完全没必要的。返回[const]引用而不是

class Neuron {
private: 
    std::vector<double> lstWeights;
public: 
    const vector<double>& GetWeight() const;
};    

const std::vector<double>& Neuron::GetWeight() const
{ 
  return lstWeights;
}

答案 2 :(得分:1)

#ifndef Neuron_h
#define Neuron_h
#include "vector"

using std::vector;

class Neuron
{
private:
 vector<double>lstWeights;
public:
 vector<double> GetWeight();

};
#endif

试试

答案 3 :(得分:0)

尝试用vector,la:

替换std::vector
std::vector<double> lstWeights;

问题是标准容器在标准命名空间中,所以你必须以某种方式让编译器知道你想要使用标准命名空间的vector版本;你可以采用以下几种方式之一,std::vector是最明确的。

答案 4 :(得分:0)

使用vector<double>前缀std::,例如std::vector<double>,应该做的工作。