C++分段故障指针

C++分段故障指针,c++,arrays,pointers,C++,Arrays,Pointers,我正在编写的一个程序采用了一组名称和年龄并按字母顺序排列。有时这个程序会起作用。大多数情况下,我在打印按字母顺序排列的列表的过程中发现了一个分段错误 这是我的头文件中的一个示例 public: static const int MAXSTU = 50; Student(); void inputData(); void sortData(); void printOriginalData(); void printAlphaData();

我正在编写的一个程序采用了一组名称和年龄并按字母顺序排列。有时这个程序会起作用。大多数情况下,我在打印按字母顺序排列的列表的过程中发现了一个分段错误

这是我的头文件中的一个示例

public:

    static const int MAXSTU = 50;

    Student();

    void inputData();
    void sortData();
    void printOriginalData();
    void printAlphaData();

private:
    int arraytotal;
    int *temp1;
    std::string *temp2;

    std::string originalname[MAXSTU]; 
    std::string *alphaname[MAXSTU];
    int originalage[MAXSTU];
    int *alphaage[MAXSTU];
这些是导致问题的功能

void Student::sortData() {
      for(int i=0;i < arraytotal;i++) {
          if (originalname[i] > originalname[i+1] ) {
            temp1 = alphaage[i];
            alphaage[i] = alphaage[i + 1];
            alphaage[i + 1] = temp1;
            temp2 = alphaname[i];
            alphaname[i] = alphaname[i + 1];
            alphaname[i+1]= temp2;
          }
      }
}

void Student::printAlphaData()
{
     cout << "\nAlphabetized list\n";
     cout << "---------------------------\n";

     for (int i = 0; i < arraytotal; ++i) 
     {
         cout << left << setw(30) << *alphaname[i];
         cout << right << setw(10) << *alphaage[i] << endl; 
     }
     cout << endl;
}

如果您能帮助我们找出问题所在,我们将不胜感激。还有没有更好的方法将数组按字母顺序排序?

也许可以使用std::sort?为什么在使用STD::vector时使用数组?有没有理由使用STD::String而不是仅仅STD::string?为什么Tim1和Tun2类成员,当它们在使用的方法中只是本地人?这个程序是用于C++类的一个。我必须对数据使用并行名称和年龄数组。arraytotal的值是多少?如果它是数组的实际大小,那么在访问索引为i+1的元素时,sortData中的循环条件应该是i