3

ユーザー入力を取得するとします。彼らが入力したものが配列にない場合 (配列を確認するにはどうすればよいですか?)、それを配列に追加します。逆に、ユーザー入力を指定して配列から何かを削除するにはどうすればよいですか。

例:

string teams[] = {"St. Louis,","Dallas","Chicago,","Atlanta,"};

cout <<"What is the name of the city you want to add?" << endl;
    cin >> add_city;

 cout <<"What is the name of the city you want to remove?" << endl;
    cin >> remove_city;
4

3 に答える 3

4

組み込み配列のサイズは不変です。要素を削除することも、追加することもできません。std::vector<std::string>代わりに ,を使用することをお勧めしstd::vector<T>ますpush_back()。要素を削除するには、たとえば を使用して要素を見つけ、 をstd::find()使用erase()して削除します。

組み込みの配列を使用する必要がある場合 (これには正当な理由はわかりませんが)、 を使用してヒープに配列を割り当て、new std::string[size]そのサイズを維持し、適切なタイミングで を使用してメモリを適切に解放しますdelete[] array;

于 2012-10-21T23:12:54.083 に答える
0

配列を使用すると、空の配列セルを「EMPTY」などのchar*で処理できます。配列を検索してアイテムを検索し、それを「置換」または追加するために検索します。

const char * Empty = "EMPTY";
cout << "Please enter a city you want to add:"
cin >> city;
for(int i = 0; i < Arr_Size; i++) //variable to represent size of array
{
    if(Arr[i] == Empty) //check for any empty cells you want to add
    {
       //replace cell
    }
    else if(i == Arr_Size-1) //if on last loop
       cout << "Could not find empty cell, sorry!";
}

セルの削除について:

cout << "Please enter the name of the city you would like to remove: ";
cin >> CityRemove;

for(int i = 0; i < Arr_Size; i++)
{
    if(Arr[i] == CityRemove)
    {
        Arr[i] = Empty;             //previous constant to represent your "empty" cell
    }
    else if(i == Arr_Size - 1)    //on last loop, tell the user you could not find it.
    {
        cout << "Could not find the city to remove, sorry!";
    }
}

'空の'セルをスキップしながら配列を印刷する//配列を印刷する

for(int i = 0; i < Arr_Size; i++)
{
    if(Arr[i] != Empty)             //if the cell isnt 'empty'
    {
        cout << Arr[i] << endl;
    }
}

しかし、私はベクトルを使用する方がはるかに効率的なアプローチであることに同意します。これは単にあなたの心に考えさせるための創造的なアプローチです。

于 2012-10-21T23:29:40.967 に答える
0

配列に情報を追加するには、次のようにします。

for (int i = 0; i < 10; i++)
{
    std::cout << "Please enter the city's name: " << std::endl;
    std::getline(cin, myArray[i]);
}

配列から何かを削除することの意味がわかりません。要素の値を0に設定すると、{"City 1"、 "City 2"、0、 "City 3}のようになります。または、要素を配列から削除して他の要素を移動しますか?そのスペースを埋めるには、{"City 1"、 "City 2"、 "City 3"}のようになりますか?

于 2012-10-21T23:12:14.187 に答える