>source

내 코드는 온라인 코딩 연습 사이트를위한 것입니다. 저는 많은 도전을 해왔지만 주위를 둘러 볼 수없는 것 같습니다.세그멘테이션 오류이것에 오류.

코드의 목적은 문자열 벡터에서 가장 긴 문자열 (최대 10 개 문자열)을 찾은 다음 가장 긴 문자열 만 순서대로 포함하는 문자열 벡터를 반환하는 것입니다.

논리적으로 내 코드가 작동한다고 생각하지만 테스트 할 수는 없습니다. 나는 여전히 벡터에 익숙하지 않아 내 문제와 관련하여 여기에 다른 답변을 제대로 이해하지 못하는 것 같습니다.

vector<string> allLongestStrings(vector<string> inputArray) {
    vector<string> longestStrings;            // vector
    int longest_size = longestStrings.size(); // int
    int longestArrayCounter = 0;              // int. For filling longestStrings whenever 
                                              //  there is a long string
    int longest_string = 0;                   // int. For recording the size of the longest string
    for (int i = 0; i < inputArray.size(); i++) {  
        // Loop will:  
        //1. Measure size of string in input array 
        //2. if longest will change value of longest_string and clear longestStrings
        //3. If the same length as longest_string will add it to longestStrings vector
        //4. if it is shorter it will be ignored
       if (inputArray[i].size() > longest_string) { // input vector
          longest_string = inputArray[i].size();     // vector
       longestStrings.clear(); //clearing the vector to only store longest string values
       longestArrayCounter = 0; //reset counter for longestStrings
       longestStrings[longestArrayCounter++] = inputArray[i];//puts new longest string from input into my vector
       }
       if (inputArray[i].size() == longest_string) { 
       longestStrings[longestArrayCounter++] =inputArray[i];// my vector and input vector
       }
   }
   return longestStrings;
}

  • 답변 # 1

          longestStrings.clear();
           longestArrayCounter = 0;
           longestStrings[longestArrayCounter++] = inputArray[i];
    
    

    존재하지 않는 요소에 할당하기 때문에 나쁘다.

    둘 대신

    longestStrings[longestArrayCounter++] = inputArray[i];
    
    

    당신은해야합니다

    longestStrings.push_back(inputArray[i]);
    
    

    그때, std::vector 크기를 관리하므로 관리 할 필요가 없습니다. longestArrayCounter 혼자서. 사용하다 longestStrings.size() 크기를 얻으려면.

관련 자료

  • 이전 mysql - 특정 ID에서 desc로 정렬 된 행을 가져 오는 방법
  • 다음 javascript - 사용자 정의 파급 효과 (내 인라인 스타일 내에서 var을 사용하고 싶습니다)