замена элементов в векторе векторов C ++

0

У меня есть вектор вектора, который содержит только периоды ("."), и я хочу заменить определенные координаты на сетке символом, который я беру из входного файла. Я использую метод replace, но продолжаю получать эту ошибку

"error: нет соответствующей функции для вызова для замены (std :: basic_string, std :: allocator> &, std :: basic_string, std :: allocator> &, const char [2], const char *)"

Я не уверен, что означает эта ошибка. Я ценю любую помощь. заранее спасибо

вот мой код

 #include <vector>
 #include <string>
 #include <fstream>
 #include <iostream>
 #include <algorithm>



using namespace std; 

int main()
{
string locationfilename, filenames,symbol;
int numRows, numCols, startRow, startCol, endRow, endCol, possRow, possCol, id;

cout<< "Enter Locations Filename"<<endl;
cin>>locationfilename;
cout<< "Enter Names Filename"<<endl;
cin>>filenames;

ifstream locations(locationfilename.c_str());
ifstream names(filenames.c_str());

locations>>numRows>>numCols>>startRow>>startCol>>endRow>>endCol;

vector <string> rows(numCols,".");
vector< vector<string> > grid(numRows,rows);


locations>>possRow>>possCol>>symbol>>id;
while(!locations.fail())
{


    if(possRow>numRows || possCol>numCols)
    {
        cout<<id<< " out of bounds-ignoring"<<endl;
    } 
    else
    {
    replace(grid.at(possRow).front(),grid.at(possRow).back(),".",symbol.c_str());
    }

locations>>possRow>>possCol>>symbol>>id;
}

}
  • 1
    std::replace принимает итераторы.
Теги:
string
vector

1 ответ

1

Как указал Крис, параметры, которые вы передали в std::replace, не являются правильными. std::replace ожидает iterators для первых двух параметров, но вы передаете references.

Вы можете использовать begin() и end() для получения итераторов:
std::replace(grid.at(possRow).begin(), grid.at(possRow).end(), ".", symbol.c_str());

Ещё вопросы

Сообщество Overcoder
Наверх
Меню