blob: 4a22459275edfb9efd0ff678b6f77658609c3916 [file] [log] [blame]
#include <iostream>
#include <vector>
#include <set>
using namespace std;
struct PasswordFormData {
const char* signon_realm;
};
struct PasswordForm {
std::string signon_realm;
PasswordForm();
~PasswordForm();
};
PasswordForm::PasswordForm(){
}
PasswordForm::~PasswordForm() {
}
PasswordForm* CreatePasswordFormFromData(
const PasswordFormData& form_data) {
PasswordForm* form = new PasswordForm();
if (form_data.signon_realm) {
form->signon_realm = "http://foo.example.com";
}
return form;
}
typedef std::set<const PasswordForm*> SetOfForms;
int main()
{
static const PasswordFormData form_data[] = {
{ "http://foo.example.com"},
};
std::vector<PasswordForm*> vector1;
for (int i = 0; i < sizeof(form_data)/sizeof(form_data[0]); ++i) {
PasswordForm* form = CreatePasswordFormFromData(form_data[i]);
vector1.push_back(form);
}
#if BUG
SetOfForms set1(vector1.begin(), vector1.end());
#else
SetOfForms set1;
std::copy(vector1.begin(), vector1.end(), std::inserter(set1, set1.begin()));
#endif
for(std::vector<PasswordForm*>::iterator iter = vector1.begin(); iter != vector1.end(); ++iter) {
const PasswordForm* value = *iter;
cout << "************************************************ vector value " << value->signon_realm.c_str() << std::endl;
}
cout<<"******************************************** set size "<< set1.size() << std::endl;
for(SetOfForms::iterator iter = set1.begin(); iter != set1.end(); ++iter) {
const PasswordForm* value = *iter;
cout << "************************************************ set value " << value << std::endl;
cout << "************************************************ set value " << value->signon_realm.c_str() << std::endl;
}
return 0;
}