【发布时间】:2019-08-20 08:05:06
【问题描述】:
我需要将std::list 的内容复制到一个数组,其中数组是数组的结构。下面是它的代码实现。
#include <iostream>
#include <string>
using namespace std;
typedef struct
{
int height;
int width;
int length;
}dimensions;
GetDimensions(list<std::string>, *int); // Function that copies the content of list to array passed as second parameter
int main()
{
dimensions cuboid[10];
int plane[10];
list<std::string> planeList = GetList();//Function that returns list of elements
list<std::string> dimensionList = GetList();
GetDimensions(planeList,&plane);//This is fine, as it is a simple array
GetDimensions(dimensionList,&cuboid.height);//Trouble in implementation of this usecase, for cuboid.height, cuboid.width and cuboid.height.
return 0;
}
GetDimensions(list<std::string>dimensionList, int* dimensionParams)
{
int i=0;
for(list<std::string>::iterator it = dimensionList.begin(); it != dimensionList.end(); ++it)
{
dimensionParams[i] = stoi(*it);
i++;
}
}
在这里,我需要GetDimensions() 函数将列表(作为第一个参数传递)复制到数组(第二个参数)。实现的函数适用于简单数组plane。但是如何将结构数组作为参数传递给函数呢?
我将获得std::list 为cuboid.height、cuboid.width 和cuboid.length。所以函数必须将list的内容分别从cuboid[0].height复制到cuboid[i].height。有没有直接复制内容的具体功能?
【问题讨论】:
-
C++ 中不需要
typedef struct { ... } abc;。请写struct abc { ... };。 -
关于您的问题,语言中没有简单的方法可以说“
dimensions数组中的所有.height子对象”。可以构建具有类似行为的东西,但它大多是丑陋且难以理解的。 -
另外,您的意思是
int* dimensionParams在GetDimensions签名中吗?现在它不适用于planeList或dimensionList- 如果dimensionList是普通的int,则不能使用dimensionList[i]。 -
您不会收到有关为
GetDimensions()声明int参数然后通过dimensionParams[i]访问它的错误消息吗? -
这显然不是 C,那为什么要那个标签呢?应用前请阅读标签说明,不要盲目推荐推荐的标签!
标签: c++ arrays algorithm struct stdlist