gpt4 book ai didi

c++ - 如何通过不同的类将一个 vector 复制到另一个 vector

转载 作者:行者123 更新时间:2023-11-30 05:42:05 30 4
gpt4 key购买 nike

我正在尝试制作一个程序,我想在其中将一个已经定义的 vector 复制到另一个但在不同的继承类中。它是这样的:

//map.cpp
void Map::setQuantity() {
std::cout << "set quantity: ";
std::cin >> quantity;
}


void Map::setArray(){
for(int i=0;i<quantity;++i) {
cityMap.push_back(City());
}
}

void Map::showMap(){
for(int i=0;i<quantity;++i){
cityMap[i].showCoords();
}
}

double Map::getLength(int a, int b) {
return sqrt(pow(cityMap[a-1].getCoordX()-cityMap[b-1].getCoordX(),2)+pow(cityMap[a-1].getCoordY()-cityMap[b-1].getCoordY(),2));
}

int Map::getQuantity() {
return quantity;
}

Map::Map() {
}

Map::~Map() {
}

//city.cpp
int City::randomize(int range) {

return rand()%range + 1;
}

void City::setCoords(){
coord_x = randomize(1000);
coord_y = randomize(1000);
}

void City::showCoords(){
std::cout << "x = " << coord_x << " y = " << coord_y << std::endl;
}

int City::getCoordX(){
return coord_x;
}

int City::getCoordY() {
return coord_y;
}

City::City(){
setCoords();
}

//populations.h
class Populations: public Map {
protected:
std::vector<City> startPop;
std::vector<City> newPop;
public:
void showPop();
void setStartPopulation();
Populations();
};

此时 populations.cpp 是空的。当我尝试使用 startPop = cityMap, copy() 或声明 startPop(cityMap) 复制它时,即使有时它会编译,在我尝试运行构造函数之后复制 vector 我有段错误(核心转储)错误。就像 Populations 类无法访问 cityMap vector 一样,即使我已经将其公开。我真的不知道如何让它工作,所以请帮助我。哦,cityMap 分配正确

最佳答案

将一个 vector 复制到另一个 vector 有多种选择。

可以使用std::copy算法,但需要包含algorithm头文件:

#include<algorithm>
std::copy(cityMap.begin(),cityMap.end(),std::back_inserter(startPop));

或者您可以使用复制构造函数构造startPop,如下所示:

startPop(cityMap);

关于c++ - 如何通过不同的类将一个 vector 复制到另一个 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30824735/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com