Unordered_set变量私有vs公共,最佳做法?

时间:2017-07-12 10:00:31

标签: c++ stl c++14

我在C ++中有一个简单的无序映射代码。现在我已经将我的变量定义为unordered_map为private,并在public中显式地编写了insert delete和print函数,这些只是调用无序的成员函数,如insert,delete和iterative search。

有人可以告诉我这是否正确的方法,因为如果是这样的话我们将不得不为所有成员函数编写显式的公共函数。例如,load_factor将有自己的,测试集合是否为空将是第二个,列表将继续。

如果我们只是在公共中声明我的变量,那么我们只需在类中编写一个行代码,我们就不必编写显式函数来从对象中执行成员函数。

那你会选择什么?更少的代码或更多的安全性?

#include<iostream>
#include <unordered_set>

using namespace std;

class unordered_set_class {

        private:
            unordered_set<string> mystring = { "White", "Black", "Brown" };


        public:
            bool insert_item(string name);
            bool delete_item(string name);
            void print();

};

void unordered_set_class::print(){

    for(auto itr = mystring.begin(); itr != mystring.end(); ++itr){
        cout << *itr << "\t";
    }

    cout << "\n";

}

bool unordered_set_class::insert_item(string name){

      mystring.insert(name);
      return true;
}

bool unordered_set_class::delete_item(string name){

     mystring.erase(name);
     return true;
}

int main(){

    class unordered_set_class t;
    t.insert_item("yellow");
    t.print();
    string x = "White";
    t.delete_item(x);
    t.print();
    cout << "Load Factor = " << t.mystring.load_factor() << "\n";

    return 1;
}

0 个答案:

没有答案