基本上我寫了一段代碼遞歸地打印出一個三角形 - 和原本我用一個迭代中的代碼採取三角形的內部部件和將它們包括在完整的「圖像」。問題的迭代器
反正這裏的代碼:
#include <iostream>
#include <string>
#include <vector>
using namespace std;
vector<string> print_triangle(int max_stars)
{
vector<string> buffer;
if(max_stars == 1)
{
buffer.push_back("*");
buffer.push_back("*");
return buffer;
}
//This is the first part of the program that writes the first line of
//asterisks
string tmp;
for(int i = 0; i < max_stars; i++)
{
tmp.push_back('*');
}
buffer.push_back(tmp);
//This is the recursive part of the program, which generates the
//remainder of the triangle pattern - the inner part.
vector<string> inner_part;
inner_part = print_triangle(max_stars - 1);
vector<string>::iterator iter = inner_part.begin();
for(; iter != inner_part.end(); ++iter)
{
buffer.push_back(*iter);
}
string tmp1;
for(int i = 0; i < max_stars; i++)
{
tmp1.push_back('*');
}
buffer.push_back(tmp1);
return buffer;
}
,如果你用下面的一段代碼,它工作正常更換迭代這個代碼不工作,但是。
for(int i = 0; i < inner_part.size(); ++i)
{
buffer.push_back(inner_part[i]);
}
我的問題是爲什麼不在這種情況下工作的迭代器。
沒有迭代器你可能會得到更快的答案如果你給比「這個代碼不工作」更多細節。何時:編譯時間?運行?怎麼了? – 2010-02-19 13:54:57
一個非常簡單的問題... – user231967 2010-02-19 13:56:03
BTW一個完全複雜的解決方案:'的std :: string(MAX_STARS,「*」)'將創建一個字符串,你想要的方式。你可以將它保存在一個'stars'變量中,然後在遞歸之前和之後將它放到'buffer'中,所以你不必構建它兩次。 – 2010-02-19 13:57:45