在 C++ 中迭代对象的创建
Iterating the creation of objects in C++
我希望能够建造N座摩天大楼。使用输入数据字符串,我想为它们提供 X 和 Y 位置的坐标值。我的主要功能是使用“i”来演示我正在尝试使用输入数据创建尽可能多的摩天大楼。本质上,我想创建 N/3 摩天大楼并将输入分配给每个摩天大楼的坐标。
#include <iostream>
#include <vector>
#include <string>
#include <math.h>
using namespace std;
vector<int> inputData = {1, 4, 10, 3, 5, 7, 9, 10, 4, 11, 3, 2, 14, 5, 5};
int N = inputData.size();
class Buildings{
public:
int yCoordinateLow;
int yCoordinateHigh;
int xCoordinateLeft;
int xCoordinateRight;
};
int main(){
for(int i=0; i<N; i=i+3){
Buildings skyscraper;
skyscraper.xCoordianteLeft = inputData.at(i);
skyscraper.yCoordianteLow = 0;
skyscraper.yCoordinateHigh = inputData.at(i+1);
skyscraper.xCoordinateRight = inputData.at(i+2);
}
return 0;
}
Jeff Atwood 曾经说过:使用金钱可以买到的最好的工具。而且这些甚至都不贵:Visual Studio 社区版是免费的。这么妥当的IDE会告诉你摩天大楼除了作业没用过
既然你以后可能想对这些摩天大楼做点什么,你应该把它们存放在某个地方,例如在另一个向量中。
int main() {
vector<Buildings> skyscrapers;
for (int i = 0; i < N; i = i + 3) {
Buildings skyscraper{};
skyscraper.xCoordinateLeft = inputData.at(i);
skyscraper.yCoordinateLow = 0;
skyscraper.yCoordinateHigh = inputData.at(i + 1);
skyscraper.xCoordinateRight = inputData.at(i + 2);
skyscrapers.push_back(skyscraper);
}
return 0;
}
除此之外,只要原始向量中有 N*3 个坐标,循环就可以正常工作。
如果你实现一个游戏,您可能不会将摩天大楼的坐标硬编码在一个向量中,而是可能会从一个文件中读取数据,可能是每个级别。
与其进行所有 error-prone 编码,不如立即初始化摩天大楼
vector<Buildings> skyscrapers = {{1,0,4,10}, {3,0,5,7}, {9,0,10,4}, {11,0,3,4}, {14,0,5,5}};
我希望能够建造N座摩天大楼。使用输入数据字符串,我想为它们提供 X 和 Y 位置的坐标值。我的主要功能是使用“i”来演示我正在尝试使用输入数据创建尽可能多的摩天大楼。本质上,我想创建 N/3 摩天大楼并将输入分配给每个摩天大楼的坐标。
#include <iostream>
#include <vector>
#include <string>
#include <math.h>
using namespace std;
vector<int> inputData = {1, 4, 10, 3, 5, 7, 9, 10, 4, 11, 3, 2, 14, 5, 5};
int N = inputData.size();
class Buildings{
public:
int yCoordinateLow;
int yCoordinateHigh;
int xCoordinateLeft;
int xCoordinateRight;
};
int main(){
for(int i=0; i<N; i=i+3){
Buildings skyscraper;
skyscraper.xCoordianteLeft = inputData.at(i);
skyscraper.yCoordianteLow = 0;
skyscraper.yCoordinateHigh = inputData.at(i+1);
skyscraper.xCoordinateRight = inputData.at(i+2);
}
return 0;
}
Jeff Atwood 曾经说过:使用金钱可以买到的最好的工具。而且这些甚至都不贵:Visual Studio 社区版是免费的。这么妥当的IDE会告诉你摩天大楼除了作业没用过
既然你以后可能想对这些摩天大楼做点什么,你应该把它们存放在某个地方,例如在另一个向量中。
int main() {
vector<Buildings> skyscrapers;
for (int i = 0; i < N; i = i + 3) {
Buildings skyscraper{};
skyscraper.xCoordinateLeft = inputData.at(i);
skyscraper.yCoordinateLow = 0;
skyscraper.yCoordinateHigh = inputData.at(i + 1);
skyscraper.xCoordinateRight = inputData.at(i + 2);
skyscrapers.push_back(skyscraper);
}
return 0;
}
除此之外,只要原始向量中有 N*3 个坐标,循环就可以正常工作。
如果你实现一个游戏,您可能不会将摩天大楼的坐标硬编码在一个向量中,而是可能会从一个文件中读取数据,可能是每个级别。
与其进行所有 error-prone 编码,不如立即初始化摩天大楼
vector<Buildings> skyscrapers = {{1,0,4,10}, {3,0,5,7}, {9,0,10,4}, {11,0,3,4}, {14,0,5,5}};