Вы ищете std :: list .Или, что лучше, std :: vector , который позволяет получить доступ к элементам по их положению.
Оба они могут быть динамически развернуты.
using namespace std;
// looks like this:
vector<string> firstvector;
firstvector.push_back(somestring); // appends somestring to the end of the vector
cout << firstvector[someindex]; // gets the string at position someindex
cout << firstvector.back(); // gets the last element
По поводу вашего второго вопроса:
Конечно, вы можете создать несколько массивов / векторов для вставки ваших строк. Может быть, даже использовать std :: map типа map<key, vector<string>>
где key
может быть перечислением для категории (или строкой, , но перечисление лучше ).
Вы вводите новое значение в один из векторов:
tCategoryEnum category = eCategoryNone;
switch(condition)
{
case MyCondition1:
category = eCategory1;
break;
case MyCondition2:
category = eCategory2;
break;
// ...
}
// check if a category was found:
if(category != eCategoryNone)
{
categoryMap[category].push_back(name);
}
Затем, чтобы вывести это, вы можете просто зациклить каждую категорию и векторный элемент
for(int i = 0; i < categoryMap.size(); i++)
for(int j = 0; j < categoryMap[i].size(); j++)
cout << categoryMap[i][j];