C++ 是否使用类进行排列算法



我编写了一个程序,它接受整数的输入vector并打印这些整数的所有可能排列。

为了做到这一点,我的程序有两种方法: void Permutate(//input)void DoPermute(//necessary arguments)只有方法Permutate应由用户/客户端调用。 DoPermutate是一种递归方法,首先由Permutate调用,并为算法提供逻辑。现在的问题是:你会把PermutateDoPermutate放在一个class中并DoPermutate private,还是你会把这两种方法放在全局范围内,根本不使用classes,从而向用户/客户端公开DoPermutate?我问这个是因为cmath全局范围内也有实用程序方法。什么是更优雅的方法?

现在的问题是:你会把PermutateDoPermutate放在一个班级里吗?

这就是我要的:

  1. namespace中声明Permutate,例如:

    namespace MyApp
    {
       // Declare
       void Permutate( ... ); // Add all the necessary arguments,
                              // which can be input arguments ad
                              // output arguments.
    }
    

    请注意,声明不会公开在实现中是否使用类。这是不需要在接口中公开的实现细节。

  2. 如果在实现中使用类有帮助,请使用它。

    namespace MyApp
    {
       // Helper class
       struct PermutateClass { ... };
       // Implement the user facing function.
       void Permutate ( ... )
       {
          // Delegate the implementation to the helper class.
          PermuateClass p(...);
          p.doIt();
       }
    }
    
  3. 如果使用类没有帮助,只需根据需要使用帮助程序函数。

    namespace MyApp
    {
       // Helper function
       void DoPermutate ( ... ) { ... }
       // Implement the user facing function.
       void Permutate ( ... )
       {
          // Delegate the implementation to the helper function.
          DoPermutate p(...);
       }
    }
    

我想强调的关键点是,是使用具有一堆成员函数的帮助程序类还是使用一堆非成员函数,这是一个实现细节,您应该能够在不影响面向用户的函数的用户的情况下进行选择。

相关内容

  • 没有找到相关文章

最新更新