代码之家  ›  专栏  ›  技术社区  ›  ghostrider

从向量创建一组字符串

  •  1
  • ghostrider  · 技术社区  · 8 年前

    我有一个向量 CustomClass 对象-其字符串字段为 name . 如何创建 set 在C++中有哪些名称?

    如果我这样做:

    std::vector<CustomClass> vec ;
    // .... populate with data
    std::set< std::string> myset( vec.begin(), vec.end() ) ;
    

    编译器当然会抱怨,但我如何“应用”一个函数以便从向量的每个元素中获得“vec.name”呢?

    我正在使用C++11。

    3 回复  |  直到 8 年前
        1
  •  8
  •   songyuanyao    8 年前

    您可以使用 std::transform 用一个 lambda (自C++11以来),例如。

    std::set<std::string> myset;
    std::transform(vec.begin(), 
                   vec.end(), 
                   std::inserter(myset, myset.end()), 
                   [](const CustomClass& cc) { return cc.name; });
    

    LIVE

        2
  •  3
  •   max66    8 年前

    一个好的旧循环(在基于范围的c++11版本中)应该可以完成这项工作

    for ( auto const & cc : vec )
       myset.emplace(cc.name);
    
        3
  •  -1
  •   K.Vani    8 年前
    #include <iostream>
    #include <vector>
    #include <string>
    using namespace std;
    class demo
    {
        public:
        string name;
        void input()
          {
             cout<<"\n Enter the Name:";
             cin>>name;
    
          }
          void output()
          {
              cout<<"\n Name is :"<<name;
          }
    
    };
    int main()
    {
    vector <demo> d1(3);
    demo *d2;
    for(int i=0;i<3;i++)
    {
        d2=new demo;
        d2->input();
        d1.push_back(*d2);
    }
    vector<demo>::iterator j;
    
    for( j=d1.begin();j!=d1.end();j++)
       {
          j->output();
      }
    
     return 0;
    
    }
    

    尝试上述编码,它将获取值并将其存储为包含类对象的向量。 矢量d1(3)-->为类demo创建一个大小为3的向量变量d1。创建另一个指针变量d2,通过该变量调用输入函数并给出值,类对象地址存储在vector中。 创建迭代器变量以访问存储值的值。 非常感谢。