Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.12.2012, 15:55   #1
SaratovAreaNetwork
 
Регистрация: 18.12.2011
Сообщений: 5
По умолчанию исключить из орграфа данную вершину

Задача простая, а у меня почему-то ишибка непонятно какая:
Цитата:
111.cpp: В функции «int main()»:
111.cpp:40:16: ошибка: запрос элемента «erase» в «(& vec.std::vector<_Tp, _Alloc>:perator[]<std::vector<int>, std::allocator<std::vector<int> > >(((std::vector<std::vector<int> >::size_type)i)))->std::vector<_Tp, _Alloc>:perator[]<int, std::allocator<int> >(((std::vector<int>::size_type)j)) », имеющего не классовый тип «int»
Сам код:
Код:
#include<fstream>
#include<sstream>
#include<iostream>
#include<string>
#include <vector>
#include <algorithm>
using namespace std;
ifstream in("input.txt");
ofstream out("output.txt");
int main()
{

    string s;
    int n,num1,num2,temp;
    in>>n;
    in.get();
    vector<vector<int> > vec(n);
    for(int i=0;i<n;i++)
    {
                std::stringstream ss;
        getline(in,s);
        ss<<s;
        while(!ss.eof())
        {
            ss>>temp;
            vec[i].push_back(temp);
        }
    }
    cout << "ввод вершины, которую необходимо удалить" << "\n";
    cin >> temp;
	for (int i=0; i<n; i++)
	{
		if (i==temp)
		{
			vec[i].erase(vec[i].begin(),vec[i].end());
		}
		for (int j=0; j<vec[i].size(); j++)
			if (vec[i][j]==temp)
				{
					vec[i].erase(vec[i].begin()+j);
				}
	}
    for(int i=0;i<n;i++)
    {
			out << "\n";
        for(int j=0;j<vec[i].size();j++)
            out<<vec[i][j]<<" ";
    }
    return 0;
}
Понимаю что делаю неправильно, раз использую STL, должен пользоваться функциями из него, но это лишь добавляет стопку-другую ошибок.
Заранее спасибо.

Последний раз редактировалось SaratovAreaNetwork; 12.12.2012 в 16:23. Причина: исправление ошибки
SaratovAreaNetwork вне форума Ответить с цитированием
Старый 12.12.2012, 15:58   #2
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Цитата:
Код:
vec[i][j].erase
vec - вектор векторов целых чисел;
vec[i] - вектор целых чисел;
vec[i][j] - целое число;
vec[i][j].erase = спятивший компилятор.
Abstraction вне форума Ответить с цитированием
Старый 12.12.2012, 16:20   #3
SaratovAreaNetwork
 
Регистрация: 18.12.2011
Сообщений: 5
По умолчанию

Понял, vec[i].erase нужно.
SaratovAreaNetwork вне форума Ответить с цитированием
Старый 12.12.2012, 16:22   #4
SaratovAreaNetwork
 
Регистрация: 18.12.2011
Сообщений: 5
По умолчанию

Теперь нашлась ошибка в алгоритме, т. к. удаляет все подряд почему-то, пример:
Во входном файле:
3
1 2
2 3
3
В выходном:
2
3
А должно быть:
2 3
3
Помоему что-то не так с условием.. Но вот где..
SaratovAreaNetwork вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Центр орграфа Ozony Помощь студентам 0 07.08.2012 23:58
Алгоритм нахождения компонент сильной связности орграфа DarkMage Win Api 0 28.05.2011 00:38
Удалить вершину с указанной меткой. Задача Turbo Prolog. Iridda Помощь студентам 1 24.01.2009 19:33
Исключить #13#10 из Length Febreze Общие вопросы Delphi 10 26.04.2008 12:52