#c #arrays #vector #replace #encode
#c #массивы #вектор #заменить #кодировать
Вопрос:
Я написал программу для кодирования обычного текстового файла, который сжимает текст. Я провел весь день сегодня, работая над этим, не понимая, что я не могу использовать векторы в своем коде, и вместо этого я должен использовать массивы. По неизвестным причинам я не очень хорошо разбираюсь в использовании массивов. У меня есть раздел моего кода, которым я могу поделиться, и я надеялся, что кто-нибудь сможет рассказать мне о шагах преобразования моих векторов в массивы. Я не публикую полный код, поскольку он предназначен для класса, но при необходимости я могу добавить больше.
#include <iostream>
#include <string>
#include <sstream>
#include<vector>
using namespace std;
vector<string> originalText;
// This function is designed to grab the last character of each sorted line, and then add it to a new string
string cluster(vector<string> amp;sortedLines, string og)
{
string endColumn = " ";
string clusterize;
int count = 0;
int ogIndex = 0;
if(sortedLines.at(count) != " ")
{
// This will check and see if there are clustered characters in the endColumn String.
for (int i = 0; i < sortedLines.size(); i )
{
endColumn.push_back(sortedLines.at(i).back());
}
for(int i = 0; i < endColumn.length(); i )
{
int clusterCount = 1;
for (int j = i 1; j < endColumn.length(); j )
{
if(endColumn.at(i) == endColumn.at(j))
{
clusterCount ;
i ;
}
else
{
break;
}
}
clusterize = to_string(clusterCount) " " endColumn.at(i) " ";
}
}
// This will get rid of the last space of the encoded string.
clusterize = clusterize.substr(0, clusterize.length() - 1);
// This is to see which index the original string is in our sorted vector.
for (int p = 0; p < sortedLines.size(); p )
{
if (sortedLines.at(p) == og)
{
ogIndex = p;
break;
}
else
{
clusterize = to_string(ogIndex) "nn";
}
clusterize = to_string(ogIndex) "n" clusterize "n";
count ;
}
return clusterize;
}
Комментарии:
1. Почему вы должны использовать массивы, а не векторы? Кроме того, если вам не разрешено использовать
std::vector
, вам, вероятно, тоже не разрешат использоватьstd::string
.2. Почему вы не можете использовать векторы в своей программе? Это школьное задание, где учитель запрещает его выполнять?
3. Ваш учитель должен отдать вам должное за использование вашей инициативы. Качество обучения CS часто разочаровывает меня.
4. Если вам не разрешено использовать векторы, почему бы вам не создать их (минимальную) пользовательскую реализацию и не заменить все вхождения? Это кажется меньшей работой, чем замена всего на массивы. Я бы назвал пользовательский класс stdvector просто для того, чтобы троллить вашего учителя (предполагая, что это домашнее задание)
5. Ваш учитель в первую очередь не должен учить вас массивам. Массивы — это продвинутая тема. Они необходимы для реализации векторов, и это все, что вы должны знать о них.