Home | History | Annotate | Download | only in jni
      1 #include <iostream>
      2 #include <vector>
      3 #include <set>
      4 
      5 using namespace std;
      6 struct PasswordFormData {
      7   const char* signon_realm;
      8 };
      9 
     10 struct PasswordForm {
     11   std::string signon_realm;
     12   PasswordForm();
     13   ~PasswordForm();
     14 };
     15 
     16 
     17 PasswordForm::PasswordForm(){
     18 }
     19 
     20 PasswordForm::~PasswordForm() {
     21 }
     22 
     23 PasswordForm* CreatePasswordFormFromData(
     24     const PasswordFormData& form_data) {
     25   PasswordForm* form = new PasswordForm();
     26   if (form_data.signon_realm) {
     27     form->signon_realm = "http://foo.example.com";
     28   }
     29   return form;
     30 }
     31 
     32 typedef std::set<const PasswordForm*> SetOfForms;
     33 
     34 int main()
     35 {
     36   static const PasswordFormData form_data[] = {
     37       { "http://foo.example.com"},
     38     };
     39   std::vector<PasswordForm*> vector1;
     40   for (int i = 0; i < sizeof(form_data)/sizeof(form_data[0]); ++i) {
     41     PasswordForm* form = CreatePasswordFormFromData(form_data[i]);
     42     vector1.push_back(form);
     43   }
     44 
     45 #if BUG
     46   SetOfForms set1(vector1.begin(), vector1.end());
     47 #else
     48   SetOfForms set1;
     49   std::copy(vector1.begin(), vector1.end(), std::inserter(set1, set1.begin()));
     50 #endif
     51   for(std::vector<PasswordForm*>::iterator iter = vector1.begin(); iter != vector1.end(); ++iter) {
     52     const PasswordForm* value = *iter;
     53     cout << "************************************************ vector value " << value->signon_realm << std::endl;
     54   }
     55   cout<<"******************************************** set size "<< set1.size() << std::endl;
     56   for(SetOfForms::iterator iter = set1.begin(); iter != set1.end(); ++iter) {
     57     const PasswordForm* value = *iter;
     58     cout << "************************************************ set value " << value << std::endl;
     59     cout << "************************************************ set value " << value->signon_realm << std::endl;
     60   }
     61     return 0;
     62 }
     63