在for循环中创建对象
create object in for loop
我有下面的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循环存在问题。我想如果我把Keywords从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)
{
}
kw
在第二个代码中只分配一次,但在每个循环迭代的第一个代码中分配
在非运行时关键代码中,以RAII方式构造对象是一种很好的做法。
相关文章:
- 使用基类指针创建对象时,缺少派生类析构函数
- 如何创建对象函数指针C++映射?
- C/C++:socket() 创建在循环中失败,打开的文件太多
- C++创建对象数组
- 在 C++ 的 Switch Case 中创建对象后对对象调用方法
- 如何获取在 main() 函数中构造的类的创建对象?
- 基于文件中的条目创建对象
- 错误:创建对象后无法分配区域
- 循环创建对象以进行C++
- C ++为什么在循环中创建对象时需要'new'
- C++:如何在循环中的堆栈上创建对象
- 在Qt中创建带有循环的QPixmap对象
- C vs Java:无尽的循环创建对象仅崩溃C
- 在循环中创建对象时,内存泄漏
- 在循环中动态创建对象
- 而在循环中创建对象并将其添加到向量总是添加相同的对象
- 在for循环中创建对象
- 如何在c++中停止在循环中创建对象
- 如何使用new操作符创建对象并使用for循环
- 如何创建一个循环并加1的类对象