まず、次のタイプoperator==
の文字列を比較するために使用できます。std::string
std::string a = "asd";
std::string b = "asd";
if(a == b)
{
//do something
}
次に、10000が配列のサイズである場合、コードにエラーがあります。
array3[m]=array3[m+1];
この行では、最大10000のm+1
st要素にアクセスしm
ています。これは、最終的に10001番目の要素にアクセスして、配列結合から抜け出そうとすることを意味します。
最後に、あなたのアプローチは間違っており、この方法では重複する文字列をすべて削除することはできません。それを行うためのより良い(しかし最良ではない)方法はこれ(擬似コード)です:
std::string array[];//initial array
std::string result[];//the array without duplicate elements
int resultSize = 0;//The number of unique elements.
bool isUnique = false;//A flag to indicate if the current element is unique.
for( int i = 0; i < array.size; i++ )
{
isUnique = true;//we assume that the element is unique
for( int j = 0; j < result.size; j++ )
{
if( array[i] == result[j] )
{
/*if the result array already contains such an element, it is, obviously,
not unique, and we have no interest in it.*/
isUnique = false;
break;
}
}
//Now, if the isUnique flag is true, which means we didn't find a match in the result array,
//we add the current element into the result array, and increase the count by one.
if( isUnique == true )
{
result[resultSize] = array[i];
resultSize++;
}
}