在for循环中创建对象

时间:2013-08-01 21:20:25

标签: c++ object

我有以下for循环,在这个foor循环中我创建了一个对象kw。

The class keywords (string, vector<pair<int,string>>, vector<string>)

for(size_t i = 0; i < names.size();i++)
{
      Keywords kw (names[i].c_str(),vreg, stopWords);
      Document d = kw.extractKeywords();
      v_doc.push_back(d);
}

我认为这个for循环存在问题。我认为如果我从for循环中取出关键字可能会更好,因为我只需要创建一次该对象。

Keywords kw (vreg, stopWords);
    for(size_t i = 0; i < names.size();i++)
    {

          Document d = kw.extractKeywords(names[i].c_str());
          v_doc.push_back(d);
    }

当我这样做时,我得不到正确的输出。能不能给我一个提示谢谢你。

哈尼。

此类用于从xml文件中提取关键字。我提供了:

  • 类构造函数
  • 复制构造函数
  • 塞特犬和吸气剂
  • 析构

您认为复制构造函数中存在问题吗

Keywords::Keywords(string xmlF,vector<pair<int, string>> re,vector<string> sw)
{
    // Setter for string: the path of the xml File
    setXml(xmlF);
    // Setter for the vector<pair<int, string>> re
    setRegularExpression(re);
    //setter for vector<string> sw
    setStopWords(sw);
}

//FREE MEMORY
Keywords::~Keywords()
{

    sw.clear();
    vreg.clear();
}

void Keywords::setRegularExpression(vector<pair<int, string>>   re)
{
    vreg = re;
}

vector<pair<int, string>>   Keywords::getRegularExpression()
{
    return vreg;
}

void Keywords::setStopWords(vector<string> s)
{
    sw = s;
}

vector<string> Keywords::getStopWords()
{
    return sw;
}

void Keywords::setXml(string xmlF)
{
    xmlFile = xmlF;

}

///COPY CONSTRUCTOR
Keywords::Keywords(const Keywords& other):vreg(other.vreg),sw(other.sw)
{

}

1 个答案:

答案 0 :(得分:3)

kw仅在第二个代码中分配一次,但在每个循环迭代的第一个代码中

在非运行时关键代码中,最好以RAII方式构造对象。