Добро пожаловать! Это — архивная версия форумов на «Хакер.Ru». Она работает в режиме read-only.
 

нужно объявить список

Пользователи, просматривающие топик: none

Зашли как: Guest
Все форумы >> [Компилируемые языки] >> нужно объявить список
Имя
Сообщение << Старые топики   Новые топики >>
нужно объявить список - 2008-12-12 00:07:06.533333   
enchantress

Сообщений: 24
Оценки: 0
Присоединился: 2008-12-12 00:03:17.280000
по задаче необходимо хранить данные в двумерном векторе(spisok),но не получается его объявить,помогите,пожалуйста

#include <vector>

struct point
{
int x;
int y;
};

int main()
{
std::vector<std::vector<int>, spisok>;

point first,second;
ifstream in_file("in.txt") ;
ofstream out_file("out.txt");

int pos1, pos2, numRoads,numPer;

in_file >> numRoads >> numPer;
point *arr=new point[numPer];

spisok.resize[numPer];

for (int i=0; i<numRoads; i++){
in_file >> first.x>> first.y>> second.x>> second.y>> pos1>> pos2;
arr[pos1]=first;
arr[pos2]=second;
spisok[pos1].push_back(pos2);
spisok[pos2].push_back(pos1);
}


}
Post #: 1
RE: нужно объявить список - 2008-12-12 01:06:01.570000   
Denaturat

Сообщений: 1741
Оценки: 453
Присоединился: 2008-10-27 20:50:06.380000
quote:

ORIGINAL: enchantress

по задаче необходимо хранить данные в двумерном векторе(spisok),но не получается его объявить,помогите,пожалуйста

std::vector&lt;std::vector&lt;int&gt;, spisok&gt;;


std::vector< std::vector<int> > spisok;

как-то так, не?

quote:

ORIGINAL: enchantress

int pos1, pos2;

spisok[pos1].push_back(pos2);
spisok[pos2].push_back(pos1);


type mismatch. что ты вообще пытаешься сделать-то?
Post #: 2
RE: нужно объявить список - 2008-12-12 01:10:45.543333   
enchantress

Сообщений: 24
Оценки: 0
Присоединился: 2008-12-12 00:03:17.280000
ага,спасибо,я это уже исправила,теперь пытаюсь вывести список

for (int q=0;q<numPer;++q){
for (int j=0; j<spisok[q].size();++j){
cout << spisok[q][j];

а прогу выкидывает из цикла(
Post #: 3
RE: нужно объявить список - 2008-12-12 01:12:55.636666   
enchantress

Сообщений: 24
Оценки: 0
Присоединился: 2008-12-12 00:03:17.280000
int pos1, pos2;

spisok[pos1].push_back(pos2);
spisok[pos2].push_back(pos1);

в цикле в pos1,pos2 считываются номера(перекрестки-по задаче),а потом создаю список тех,которые соединены
Post #: 4
RE: нужно объявить список - 2008-12-12 01:38:26.896666   
Denaturat

Сообщений: 1741
Оценки: 453
Присоединился: 2008-10-27 20:50:06.380000
quote:

ORIGINAL: enchantress

int pos1, pos2;

spisok[pos1].push_back(pos2);
spisok[pos2].push_back(pos1);

в цикле в pos1,pos2 считываются номера(перекрестки-по задаче),а потом создаю список тех,которые соединены


spisok имеет тип std::vector< std::vector<int> >, а это значит что push_back будет ожидать на вход переменную типа std::vector<int>, а уж никак не int как у тебя - type mismatch, вектор-то двумерный

но ход мысли мне по нраву
Post #: 5
RE: нужно объявить список - 2008-12-12 01:43:03.040000   
enchantress

Сообщений: 24
Оценки: 0
Присоединился: 2008-12-12 00:03:17.280000
а у меня не выдает ошибок :( я себе это просто представляла как набор "строк",каждый раз в соответствующую добавляется по элементу, а как бы ты предложил организовать такую запись(из входного файла попарно считываются номера соединенных дорогой перекрестков,они повторяются,и я хотела чтобы в записи каждому перекрестку в соответсвие ставились соединенные с ним)
Post #: 6
RE: нужно объявить список - 2008-12-12 01:52:40.213333   
Denaturat

Сообщений: 1741
Оценки: 453
Присоединился: 2008-10-27 20:50:06.380000

quote:

ORIGINAL: enchantress

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


пардон, я идиот. естественно там нет type mismatch
Post #: 7
RE: нужно объявить список - 2008-12-12 01:54:34.276666   
enchantress

Сообщений: 24
Оценки: 0
Присоединился: 2008-12-12 00:03:17.280000
ну зачем так самокритично) а почему тогда не работает?
Post #: 8
RE: нужно объявить список - 2008-12-12 02:02:22.513333   
Denaturat

Сообщений: 1741
Оценки: 453
Присоединился: 2008-10-27 20:50:06.380000
quote:

ORIGINAL: enchantress

ну зачем так самокритично) а почему тогда не работает?


typedef std::vector&lt; std::vector&lt;int&gt; &gt;::iterator VecVecIter; typedef std::vector&lt;int&gt;::iterator VecIter; VecVecIter oEnd = spisok.end(); for(VecVecIter j = spisok.begin(); j != oEnd; ++j) { VecIter iEnd = j-&gt;end(); for(VecIter k = j-&gt;begin(); k != iEnd; ++k) { std::cout &lt;&lt; *k &lt;&lt; std::endl; } }
это касательно вывода
Post #: 9
RE: нужно объявить список - 2008-12-12 02:17:17.676666   
enchantress

Сообщений: 24
Оценки: 0
Присоединился: 2008-12-12 00:03:17.280000
ой,это на с++? а то я только начала учить,и с первого взгляда не совсем понятно,но попробую разобраться
Post #: 10
RE: нужно объявить список - 2008-12-12 02:23:11.286666   
Denaturat

Сообщений: 1741
Оценки: 453
Присоединился: 2008-10-27 20:50:06.380000
quote:

ORIGINAL: enchantress

ой,это на с++? а то я только начала учить,и с первого взгляда не совсем понятно,но попробую разобраться


к сожалению, да - это C++. а boost можно пользовать? убогость стандартных алгоритмов меня убивает :(
Post #: 11
RE: нужно объявить список - 2008-12-12 02:25:53.866666   
enchantress

Сообщений: 24
Оценки: 0
Присоединился: 2008-12-12 00:03:17.280000
в моем случае для начала можно обойтись и убогими стандартными) но согласна,если б в большей степени владела языком программирования-было бы и проше,и красивей,но тут уже стоит задача не красиво написать,а написать к зачету,причем сжатые сроки(
Post #: 12
RE: нужно объявить список - 2008-12-12 02:43:22.750000   
Denaturat

Сообщений: 1741
Оценки: 453
Присоединился: 2008-10-27 20:50:06.380000
quote:

ORIGINAL: enchantress

в моем случае для начала можно обойтись и убогими стандартными) но согласна,если б в большей степени владела языком программирования-было бы и проше,и красивей,но тут уже стоит задача не красиво написать,а написать к зачету,причем сжатые сроки(


вот - с помощью Мэйерса, гугла и такой-то матери - более изящный вариант

#include &lt;iostream&gt; #include &lt;vector&gt; #include &lt;algorithm&gt; #include &lt;iterator&gt; template &lt;typename T&gt; class print_vector { public: void operator()(const std::vector&lt;T&gt;& v) { std::copy(v.begin(), v.end(), std::ostream_iterator&lt;T&gt;(std::cout, " ")); std::cout&lt;&lt; " " &lt;&lt; std::endl; } }; int main() { std::vector&lt; std::vector&lt;int&gt; &gt; spisok; // здесь заполнение вектора std::for_each(spisok.begin(), spisok.end(), print_vector&lt;int&gt;() ); return 0; }
а что к зачёту - это плохо. но пишешь ты забавно, обращайся ежели чего ;)
Post #: 13
RE: нужно объявить список - 2008-12-12 02:48:26.330000   
enchantress

Сообщений: 24
Оценки: 0
Присоединился: 2008-12-12 00:03:17.280000
мне нравится, спасибо) у меня там суть задачи даже далеко не в этом состоит,но думаю путем таких вот проб и ошибок я ее напишу)))
Post #: 14
RE: нужно объявить список - 2008-12-12 02:57:20.240000   
Denaturat

Сообщений: 1741
Оценки: 453
Присоединился: 2008-10-27 20:50:06.380000
quote:

ORIGINAL: enchantress

мне нравится, спасибо) у меня там суть задачи даже далеко не в этом состоит,но думаю путем таких вот проб и ошибок я ее напишу)))


я понял. судя по твоим комментариям с фактической стороной проблем быть не должно, ну а в том что касается плюсовых заморочек - всегда рад помочь ;) удачи
Post #: 15
RE: нужно объявить список - 2008-12-12 03:31:23.376666   
_SaZ_

Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
Шаблоны рулят… пока не нарываешься на "INTERNAL COMPILER ERROR at std::list …blablablabla… - please, contact microsoft technical support" всякие (по требованию заказчика - компилер мелкосовтовский). А потом всё красивую архитектуру приходится прибивать на фиг и использовать индусские методы кодокопипастанья.

Сейчас точно ситуацию не воспроизведу, но там было из-за сложной архитектуры protected наследования. В инете можно поискать, предлагали обходные "костыли", однако они получались ещё более тяжеловесными, нежели решение "в лоб".
Post #: 16
RE: нужно объявить список - 2008-12-12 03:34:05.830000   
Denaturat

Сообщений: 1741
Оценки: 453
Присоединился: 2008-10-27 20:50:06.380000
quote:

ORIGINAL: _SaZ_

Шаблоны рулят… пока не нарываешься на "INTERNAL COMPILER ERROR at std::list …blablablabla… - please, contact microsoft technical support" всякие (по требованию заказчика - компилер мелкосовтовский). А потом всё красивую архитектуру приходится прибивать на фиг и использовать индусские методы кодокопипастанья.

Сейчас точно ситуацию не воспроизведу, но там было из-за сложной архитектуры protected наследования. В инете можно поискать, предлагали обходные "костыли", однако они получались ещё более тяжеловесными, нежели решение "в лоб".


дашь конкретный код - покажу в чём проблема; protected наследование - это уже явный признак проблем с дизайном, думаю там и других хватало

а по поводу шаблонов скажу так: волков бояться - в лесу не еб~wне ходить то есть
Post #: 17
RE: нужно объявить список - 2008-12-12 03:45:00.900000   
_SaZ_

Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
Проблема в мелкосовтовском компиляторе, а не в protected наследовании.
Имхо, мнения, что не public наследование и friend - признак кривой архитектуры - ошибочны.
Post #: 18
RE: нужно объявить список - 2008-12-12 03:51:33.570000   
Denaturat

Сообщений: 1741
Оценки: 453
Присоединился: 2008-10-27 20:50:06.380000
quote:

ORIGINAL: _SaZ_

Проблема в мелкосовтовском компиляторе, а не в protected наследовании.


учитывая отсутствие конкретного примера - очень смелое утверждение

quote:

ORIGINAL: _SaZ_

Имхо, мнения, что не public наследование и friend - признак кривой архитектуры - ошибочны.


во-первых, ты немножко съехал с темы - я говорил конкретно о protected наследовании. а во-вторых, в задницу такие имхи без аргументации. хочешь поговорить об этом - валяй, создавай топик, я пока за пивом схожу ;)
Post #: 19
RE: нужно объявить список - 2008-12-12 04:18:25.990000   
Denaturat

Сообщений: 1741
Оценки: 453
Присоединился: 2008-10-27 20:50:06.380000
quote:

ORIGINAL: enchantress

мне нравится, спасибо) у меня там суть задачи даже далеко не в этом состоит,но думаю путем таких вот проб и ошибок я ее напишу)))


вот ещё более хтонический вариант:

#include &lt;iostream&gt; #include &lt;vector&gt; #include &lt;algorithm&gt; #include &lt;iterator&gt; template &lt;typename T&gt; class print_vector { public: void operator()(const std::vector&lt;T&gt;& v) { std::copy(v.begin(), v.end(), std::ostream_iterator&lt;T&gt;(std::cout, " ")); std::cout&lt;&lt; " " &lt;&lt; std::endl; } }; template &lt;typename T&gt; std::ostream & operator&lt;&lt;(std::ostream & os, std::vector&lt; std::vector&lt;T&gt; &gt; & vec) { typename std::vector&lt; std::vector&lt;T&gt; &gt;::iterator beg = vec.begin(); typename std::vector&lt; std::vector&lt;T&gt; &gt;::iterator end = vec.end(); std::for_each(beg, end, print_vector&lt;T&gt;()); return os; }
теперь там, где надо вывести вектор ты можешь написать просто

std::cout << spisok;

по-моему так удобней
Post #: 20
RE: нужно объявить список - 2008-12-12 12:51:36.780000   
enchantress

Сообщений: 24
Оценки: 0
Присоединился: 2008-12-12 00:03:17.280000
а ты не мог бы немного пояснить? непосредственно, что такое template? не понятно,каким образом вектор будет заполняться из входящего файла(
Post #: 21
RE: нужно объявить список - 2008-12-12 15:19:48.050000   
Denaturat

Сообщений: 1741
Оценки: 453
Присоединился: 2008-10-27 20:50:06.380000
quote:

ORIGINAL: enchantress

а ты не мог бы немного пояснить? непосредственно, что такое template? не понятно,каким образом вектор будет заполняться из входящего файла(


template - ключевое слово языка C++, предшествующее объявлению (и определнению - в данном случае разнесения на .hpp/.cpp-файлы нет (исключение - экспорт шаблонов, но о нём лучше не задумываться)) обобщённого (параметризованного) типа - шаблона. C++ поддерживает два вида шаблонов: шаблоны классов и шаблоны функций, между ними есть ряд специфических различий в плане парметризации (например, шаблоны классов поддерживают частичную специализацию - а для шаблонов функций действует механизм выведения типов), но общая идея одна - возможность варьировать некоторый набор типов, от которых зависит поведение параметризуемого типа

в данном случае класс функции print_vector (функции в C++ не являются first class object, поэтому в околофункциональном стиле как правило используются объекты функций - или функторы - объекты классов, определяющих оператор () - оператор круглых скобок) работает с шаблоном класса std::vector, для использования которого необходимо выполнить подстановку шаблонного параметра (параметризованный тип в C++ не является полным типом, и с ним нельзя производить никакие операции). дабы не ограничивать себя возможностью работать с каким-то одним конкретным типом контейнера, print_vector тоже параметризуется, и просто передаёт свой параметр шаблона дальше - в std::vector. таким образом print_vector может работать с вектором, содаржащим объекты любого типа (в нашей задаче нужен int, но этот же класс можно будет в дальнейшем использовать и для double, и для std::string, и для практически любого другого встроенного либо пользовательского типа)

всё, что делает приведённый код - это обработка вывода (pretty print) двумерного вектора с возможностью использовать её в стиле стандартных потоков ввода-вывода C++; заполнения вектора здесь нет. если с заполнением у тебя есть какие-то сложности - могу пояснить как это можно сделать аналогичным образом с помощью std::copy и std::istream_iterator
Post #: 22
RE: нужно объявить список - 2008-12-12 16:47:21.083333   
enchantress

Сообщений: 24
Оценки: 0
Присоединился: 2008-12-12 00:03:17.280000
ага,становится понятней. а инициализацию. которую я использовала,использовать вообще можно?
std::vector<std::vector<int>, spisok>;
spisok.resize[numPer];
spisok[pos1].push_back(pos2);
spisok[pos2].push_back(pos1);
ведь заполнение по идее правильное,но на последнем цикле выкидывает
я просто хочу чтоб в каждой строке двумерного вектора хранились значения,связанные по условию со значением=номеру этой строки,
и получив это значение получать соответсвующие координаты из arr,
я даже вроде придумала,как это описать. ты не смотри,что пытаюсь примитивно написать-просто так легче разобраться с самим языком
* <typename T>* - имя типа вектора Т?
Post #: 23
RE: нужно объявить список - 2008-12-12 17:01:52.590000   
Denaturat

Сообщений: 1741
Оценки: 453
Присоединился: 2008-10-27 20:50:06.380000
quote:

ORIGINAL: enchantress

std::vector&lt;std::vector&lt;int&gt;, spisok&gt;;


std::vector< std::vector<int> > spisok;

quote:

ORIGINAL: enchantress

spisok.resize[numPer];


а вот это - хороший и показательных ход; здесь ты не только выделяешься память под необходимые тебе векторы, но и вызываешь для них конструкторы по умолчанию (т.е. после этого вызова ты можешь обращаться по индексам (посредством operator[] или at()) spisok от 0 до numPer - 1

quote:

ORIGINAL: enchantress

spisok[pos1].push_back(pos2);
spisok[pos2].push_back(pos1);


аналогично, здесь всё корректно (во всяком случае я проблем не вижу)

quote:

ORIGINAL: enchantress

ведь заполнение по идее правильное,но на последнем цикле выкидывает


пройдись отладчиком - посмотри, почему выкидывает. могу сделать это за тебя, но самой будет познавательней

quote:

ORIGINAL: enchantress

* &lt;typename T&gt;* - имя типа вектора Т?


T - формальный параметр шаблона, имя типа, которым он параметризуется. в данном случае - да, это тип значений, хранимых в векторе

quote:

ORIGINAL: enchantress

ты не смотри,что пытаюсь примитивно написать-просто так легче разобраться с самим языком


не переживай, в этом треде туплю в основном я
Post #: 24
RE: нужно объявить список - 2008-12-12 17:15:51.706666   
enchantress

Сообщений: 24
Оценки: 0
Присоединился: 2008-12-12 00:03:17.280000
ты на самом деле вселяешь мне надежду на то,что я ее напишу, так что тебе тупить точно нельзя)
смотри,мне для проверки надо знать значения трех послдених перекрестков. самый первый я знаю точно,тогда могу сохранить его значение в массиве, где будут храниться все последующие подходящие, и на ряду в этим необходимо хранить значения трех использумемых перекрестков,точнее их координат. как к нии обращаться? если нужный мне хранится во второй строке вектора на i-ом месте его можно же вызвать как spisok.at(1).at(i)? и обращение к координатам в массиве arr, если мне нужен например x с 3-е1 позиции arr[3].x-допустимо?
Post #: 25
RE: нужно объявить список - 2008-12-12 17:20:04.393333   
Denaturat

Сообщений: 1741
Оценки: 453
Присоединился: 2008-10-27 20:50:06.380000
quote:

ORIGINAL: enchantress

если нужный мне хранится во второй строке вектора на i-ом месте его можно же вызвать как spisok.at(1).at(i)?


проще как: spisok[ 1 ] , at() отличается только отсутствием гарантии на проверку выхода за пределы вектора

quote:

ORIGINAL: enchantress

и обращение к координатам в массиве arr, если мне нужен например x с 3-е1 позиции arr[3].x-допустимо?


если я тебя правильно понял, то вполне. у тебя массив структур, соответственно arr[3] = *(arr + 3) :: point, а у типа point есть селектор x

P.S. укуреный движок форума, право слово
Post #: 26
RE: нужно объявить список - 2008-12-12 17:25:47.290000   
enchantress

Сообщений: 24
Оценки: 0
Присоединился: 2008-12-12 00:03:17.280000
quote:

проще как spisok[1],

spisok[1] например?

at() отличается только отсутствием гарантии на проверку выхода за пределы вектора


вооот,хотела спросить,как узнать,когда заканчивается строка в векторе? ведь он получается не пропрциональным, тобишь в первой строке может быть n элементов,в следующей n+1 и т.д?
Post #: 27
RE: нужно объявить список - 2008-12-12 17:35:08.166666   
Denaturat

Сообщений: 1741
Оценки: 453
Присоединился: 2008-10-27 20:50:06.380000
quote:

ORIGINAL: enchantress

spisok[1] например?


spisok[1], это всё ублюдочное форматирование этого форума :(

quote:

ORIGINAL: enchantress

вооот,хотела спросить,как узнать,когда заканчивается строка в векторе? ведь он получается не пропрциональным, тобишь в первой строке может быть n элементов,в следующей n+1 и т.д?


во-первых, у std::vector есть метод size(), который вернёт фактическое количество элементов в нём хранящихся; во-вторых, есть метод end(), который вернёт итератор, указывающий на перую ячейку за последним элементом вектора, т.е. *(vector.end() - 1) - значение последнего элемента (и некорректный вызов в случае если вектор пустой)

для полного прохода вектора удобно использовать стандартный алгоритм std::for_each
Post #: 28
RE: нужно объявить список - 2008-12-12 17:36:13.666666   
_SaZ_

Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
std::vector&lt; int &gt; v; int n = v.size();
Post #: 29
RE: нужно объявить список - 2008-12-12 17:37:32.243333   
_SaZ_

Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
http://msdn.microsoft.com/en-us/library/k449z507(VS.80).aspx
Post #: 30
RE: нужно объявить список - 2008-12-12 17:44:50.950000   
enchantress

Сообщений: 24
Оценки: 0
Присоединился: 2008-12-12 00:03:17.280000
о,отлично, становится все более понятно))) напишу вечером,когда попытаюсь дописать задачу и у меня по-любому что-нибудь не получится)
Post #: 31
RE: нужно объявить список - 2008-12-12 17:51:26.050000   
Denaturat

Сообщений: 1741
Оценки: 453
Присоединился: 2008-10-27 20:50:06.380000
quote:

ORIGINAL: _SaZ_

std::vector&lt; int &gt; v; int n = v.size();


vector<int>::size_type n = v.size()

так корректней, не находишь? ;)

впрочем, в большинстве случаев там будет тип size_t
Post #: 32
RE: нужно объявить список - 2008-12-12 18:28:16.970000   
_SaZ_

Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
Да, так корректней.
Post #: 33
RE: нужно объявить список - 2008-12-12 23:18:34.370000   
enchantress

Сообщений: 24
Оценки: 0
Присоединился: 2008-12-12 00:03:17.280000
у меня все какие-то траблы с выводом списка((

quote:


#include &lt;iostream&gt;
#include &lt;vector&gt;
#include &lt;algorithm&gt;
#include &lt;iterator&gt;

template &lt;typename T&gt;
class print_vector
{
public:
void operator()(const std::vector&lt;T&gt;& v)
{
std::copy(v.begin(), v.end(), std::ostream_iterator&lt;T&gt;(std::cout, " "));
std::cout&lt;&lt; " " &lt;&lt; std::endl;
}
};

template &lt;typename T&gt;
std::ostream & operator&lt;&lt;(std::ostream & os, std::vector&lt; std::vector&lt;T&gt; &gt; & vec)
{
typename std::vector&lt; std::vector&lt;T&gt; &gt;::iterator beg = vec.begin();
typename std::vector&lt; std::vector&lt;T&gt; &gt;::iterator end = vec.end();

std::for_each(beg, end, print_vector&lt;T&gt;());

return os;
}


я так понимаю,это вставляется в начало программы,Т так и остается,т.к в нем хранится тип передаваемого параметра,а вызывать элемент списка можно стандартно cout << spisok[1][1]? или нужна еще какая-то непосредственная связь spisk-a с обработкой вывода?
Post #: 34
RE: нужно объявить список - 2008-12-12 23:26:59.860000   
Denaturat

Сообщений: 1741
Оценки: 453
Присоединился: 2008-10-27 20:50:06.380000
quote:

ORIGINAL: enchantress

я так понимаю,это вставляется в начало программы,Т так и остается,т.к в нем хранится тип передаваемого параметра,а вызывать элемент списка можно стандартно cout &lt;&lt; spisok[1][1]? или нужна еще какая-то непосредственная связь spisk-a с обработкой вывода?


забей на T, его область видимости в обоих случаях очень ограничена (в первом случае - классом print_vector, во втором - оператором <<); нужна вся эта бодяга для того, чтобы можно было сделать std::cout << spisok, т.е. весь список отправить на вывод вместо того чтобы выводить его поэлементно в цикле

если ты хочешь вывести какой-то один элемент, то по-прежнему можешь воспользоваться std::cout << spisok[1][2], аналогично если ты хочешь вывести какую-то одну строку списка, ты можешь использовать print_vector:

print_vector<int> printer;
printer(spisok[1]);

например как-то так
Post #: 35
RE: нужно объявить список - 2008-12-12 23:30:10.313333   
enchantress

Сообщений: 24
Оценки: 0
Присоединился: 2008-12-12 00:03:17.280000
я наверное туплю?

#include <vector>
#include <ostream.h>
#include <fstream.h>
#include <algorithm>
#include <iterator>

template <typename T>

class print_vector
{
public:
void operator()(const std::vector<T>& v)
{
std::copy(v.begin(), v.end(), std::ostream_iterator<T>(std::cout, " "));
std::cout<< " " << std::endl;
}
};

template <typename T>
std::ostream & operator<<(std::ostream & os, std::vector< std::vector<T> > & vec)
{
typename std::vector< std::vector<T> >::iterator beg = vec.begin();
typename std::vector< std::vector<T> >::iterator end = vec.end();

std::for_each(beg, end, print_vector<T>());

return os;
}

struct point
{
int x;
int y;
};

int main()
{
std::vector<std::vector<int> > spisok;

point first,second;
ifstream in_file("in.txt") ;
ofstream out_file("out.txt");

int pos1, pos2, numRoads, numPer;

in_file >> numRoads >> numPer;

point *arr=new point[numPer];

spisok.resize(numPer);

for (int i=0; i<numRoads; i++){
in_file >> first.x>> first.y>> second.x>> second.y>> pos1>> pos2;
arr[pos1]=first;
arr[pos2]=second;
spisok[pos1].push_back(pos2);
spisok[pos2].push_back(pos1);
}

cout << spisok[1][1];

system("pause");
return 0;
}
Post #: 36
RE: нужно объявить список - 2008-12-12 23:57:14.246666   
Denaturat

Сообщений: 1741
Оценки: 453
Присоединился: 2008-10-27 20:50:06.380000
quote:

ORIGINAL: enchantress

я наверное туплю?


зависит от того, чего ты ожидала получить

quote:

ORIGINAL: enchantress

template &lt;typename T&gt;
class print_vector


здесь пустая строка ни к чему

quote:

ORIGINAL: enchantress

cout &lt;&lt; spisok[1][1];


а здесь ты, вероятно, хотела вывести весь список? это делается так: std::cout << spisok; безо всяких индексов
Post #: 37
RE: нужно объявить список - 2008-12-13 00:02:18.013333   
enchantress

Сообщений: 24
Оценки: 0
Присоединился: 2008-12-12 00:03:17.280000
хотела первый элемент первой строки, std::cout << spisok; - тут ошибку пишет,т.к cout не относится к 'std'
Post #: 38
RE: нужно объявить список - 2008-12-13 00:29:12.383333   
Denaturat

Сообщений: 1741
Оценки: 453
Присоединился: 2008-10-27 20:50:06.380000
quote:

ORIGINAL: enchantress

std::cout &lt;&lt; spisok; - тут ошибку пишет,т.к cout не относится к 'std'


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

а если так?
Post #: 39
RE: нужно объявить список - 2008-12-13 00:31:36.103333   
enchantress

Сообщений: 24
Оценки: 0
Присоединился: 2008-12-12 00:03:17.280000
а так 6 ошибок
Post #: 40
Страниц:  [1] 2
Все форумы >> [Компилируемые языки] >> нужно объявить список







Связаться:
Вопросы по сайту / xakep@glc.ru

Предупреждение: использование полученных знаний в противозаконных целях преследуется по закону.