编写一个功能零件表,该零件表提供了将至少两个元素的列表(数组)划分为两个非空部分的所有方法。
据我了解,该函数应该产生原始数组的线性分区(使用术语作为数学函数)。
我想我分别理解函数的每种类型,但是我正在努力将它们全部组合在一起。
(我有6个月的C ++经验,没有其他语言。这是我用来提高我的编码技能的代码战的练习)
我已经编写了函数代码,直到开始测试为止,但是用表达问题的方式,我不理解如何实例化类类型。我已经从类说明和cplusplus.com中单独查看了静态,向量,对和常量。
我已经知道程序可以编译,但不会完成main()
。我感觉好像缺少了一些重要的信息,并且感谢您对理解程序目标的任何帮助。
#include <iostream>
#include <vector>
class PartList
{
public:
static std::vector<std::pair <std::string, std::string>> partlist(std::vector<std::string> &arr);
};
///The above is what I have to work with///
int main(){
std::vector<std::string> tester = {"I", "Love", "To", "Discrete"};
PartList::partlist(tester);
}
std::vector<std::pair<std::string,std::string>> PartList::partlist(std::vector<std::string> &arr){
std::vector<std::pair<std::string,std::string>> output;
std::vector<std::pair<std::string,std::string>>::iterator bigIt = output.begin();
std::vector<std::string>::iterator myIt;
for(std::vector<std::string>::iterator secIt = arr.begin();
secIt != arr.end(); secIt++){
myIt = arr.begin();
while(myIt <= secIt){
bigIt->first += *myIt;
myIt++;
}
while((myIt > secIt) && myIt != arr.end()){
bigIt->second += *myIt;
myIt++;
}
}
return output;
}
预期:
对于set {std::string a, std::string b, std::string c, std::string d}
应该导致{a, bcd}, {ab,cd}, {abc,d}
结果:
没事
答案 0 :(得分:1)
正如约翰在评论中所说。您实际上并没有I
做什么。在I
循环的开始,您需要使用f
将新项目附加到output
。然后,不使用迭代器,只需使用for
代码:
output