我有下面的C++代码,但是我得到了一些错误,比如下面(在代码块之后)代理是我在一个单独的文件中创建的一个类
vector<Agent> population;
for (vector<int>::iterator i = population.begin(); i != population.end(); ++i) {
population.push_back(new Agent(generateDna(targetString.size())));
}
我得到以下错误
2.没有与这些操作数匹配的运算符" !=“--操作数类型为:__gnu_cxx::__normal_iterator>>!= __gnu_cxx::__normal_iterator>>
3.没有重载函数"std::vector<_Tp,_Alloc>::push_back with _Tp=Agent,_Alloc=std::allocator“的实例与参数列表匹配--参数类型为:(Agent *) --对象类型为: std::vector>
我刚接触c++,所以这些东西可能是不言而喻的,但我不知道它们是什么意思。
发布于 2018-09-11 03:00:04
主要的问题是,你要迭代的集合,你附加在循环中,甚至通过迭代器,它被定义为int而不是Agent。
还要注意使用new关键字。您必须稍后释放该内存。
解决方案:
vector<Agent> population;
vector<Agent> newPopulation;
for (vector<Agent>::iterator i = population.begin(); i != population.end(); ++i) {
newPopulation.push_back(Agent(generateDna(targetString.size())));
}
发布于 2018-09-11 03:08:44
您当前的编译问题是,您试图将std::vector<Agent>::iterator
存储到std::vector<int>::iterator
中。这是两种完全不同的类型。
还有一个问题是,您试图将一个Agent*
存储到Agent
的向量中。
总之:
std::vector<Agent> population;
//fill your vector.. otherwise loop is useless because size is 0..
auto size = population.size();
for (unsigned int i = 0; i < size; ++i) {
population.push_back(Agent(generateDna(targetString.size())));
}
https://stackoverflow.com/questions/52263883
复制相似问题