powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Двусторонний список: некорректное удаление элемента
27 сообщений из 27, показаны все 2 страниц
Двусторонний список: некорректное удаление элемента
    #38308640
Фотография Compositum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброго времени суток.

От приведённого ниже кода ожидаю получить следующий результат:

Ожидаемый результат{ Thor, Odin, Freia }
{ Hera, Ares, Poseidon, Zeus }

Однако по факту получаю такое:
Фактический результат{ Thor, Odin, Zeus }
{ Hera, Ares, Poseidon, Zeus }

Не пойму, почему из первого списка не исчез Zeus... Freia понятно почему исчезла - потому, что в Zeus указатели обнулены, но ведь в функции erase элементу Odin так же была переназначена ссылка на Freia, вместо Zeus...

исходный код
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
/*
test.cpp
© Andrey Bushman, 24/06/2013
Chapter 17.5.2
*/
//--------------------------------------------------------------------
#include <iostream>
#include <string>
#include <exception>
using namespace std;
//********************************************************************
namespace Bushman{
//--------------------------------------------------------------------
	struct Link{ // элемент двустороннего списка.
		string value; // значение
		Link* prev; // предыдущий
		Link* succ; // следующий
		Link(const string& v, Link* p = 0, Link* n = 0): value(v), 
		prev(p), succ(n){}		
	};
//--------------------------------------------------------------------
	Link* insert(Link* p, Link* n){ // вставка p перед n
		if(!p || !n) throw runtime_error("void Bushman::insert(Link* "
		"p, Link* n): Invalid argument.");
		p -> prev = n -> prev;
		if(p -> prev) p -> prev -> succ = p; // если не первый элемент
		p -> succ = n;
		n -> prev = p;
		return n;
	}
//--------------------------------------------------------------------
	Link* erase(Link* p){ // удалить p из списка. возвращается след.
		if(p == 0) return 0;		
		if(p -> succ) p -> succ -> prev = p -> prev;
		if(p -> prev) p -> prev -> succ = p -> succ;
		Link* result = p -> succ;
		p -> prev = 0;
		p -> succ = 0;
		return result;
	}
//--------------------------------------------------------------------
	Link* find(Link* p, const string& s){ // найти элемент в списке.
		if(!p) return 0;
		while(p){
			if(p -> value == s) return p;
			p = p -> succ;
		}
		return 0;
	}
//--------------------------------------------------------------------
	Link* advance(Link* p, int n){ // переместиться на n элементов.
		if(!p) return 0;
		if(n > 0){
			while(n--){
				if(p -> succ == 0) return 0;
				p = p -> succ;
			}
		}
		else if(n < 0){
			while(n++){
				if(p -> prev == 0) return 0;
				p = p -> prev;
			}
		}
		return p;
	}
//--------------------------------------------------------------------
	void print_all(Link* p){ // распечатать список
		cout << "{ ";
		while(p){
			cout << p -> value;
			if(p = p -> succ) cout << ", ";
		}
		cout << " }";
	}
}
//====================================================================
int main()
// точка входа
try{
	using namespace Bushman;
	
	// список норвежских богов
	Link* norse_gods = new Link("Thor");
	Link* first = norse_gods;
	norse_gods = insert(norse_gods,new Link("Odin"));
	norse_gods = insert(norse_gods,new Link("Zeus"));
	norse_gods = insert(norse_gods,new Link("Freia"));
	
	// список греческих богов
	Link* greek_gods = new Link("Hera");
	Link* second = greek_gods;
	greek_gods = insert(greek_gods, new Link("Mars"));
	greek_gods = insert(greek_gods, new Link("Poseidon"));
	
	// исправляю ошибки...
	Link* p = find(first, "Zeus"); // зевса переношу к грекам
	if(p){
		erase(p);
		insert(greek_gods,p);
	}	
	
	Link* p2 = find(second, "Mars"); // переименовываю марса
	if(p2) p2 -> value = "Ares";
	
	// печатаю результаты
	print_all(first);
	cout << endl;
	print_all(second);
}
catch(exception& e){
	cerr << e.what() << endl;
	return 1;
}
catch(...){
	cerr << "Unknown exception." << endl;
	return 2;
}



Уже все глаза просмотрел на функцию erase, никак не соображу в чём дело...

Спасибо.
...
Рейтинг: 0 / 0
Двусторонний список: некорректное удаление элемента
    #38308718
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ошибка в insert. Если ты ставишь p перед n, то не надо трогать указатель p->prev.
...
Рейтинг: 0 / 0
Двусторонний список: некорректное удаление элемента
    #38308732
Фотография Compositum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owl,

Да, спасибо, пока ехал в метро, тоже нашёл эту ошибку. Рабочий вариант такой:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
//--------------------------------------------------------------------
	Link* insert(Link* p, Link* n){ // вставка p перед n
		if(!p || !n) throw runtime_error("void Bushman::insert(Link* "
		"p, Link* n): Invalid argument.");
		if(n -> prev) p -> prev = n -> prev;
		if(p -> prev) 
			p -> prev -> succ = p; // если не первый элемент
		p -> succ = n;
		n -> prev = p;
		return n;
	}


White Owlто не надо трогать указатель p->prev.
Не согласен. Указатель трогать нужно, но только при выполнении добавленного мною выше условия, иначе не будет корректно работать такой вариант вызова:
Код: plaintext
1.
greek_gods = insert(new Link("Gefest"), greek_gods);
...
Рейтинг: 0 / 0
Двусторонний список: некорректное удаление элемента
    #38308769
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CompositumРабочий вариант такой
Рабочий вариант такой: std::list
...
Рейтинг: 0 / 0
Двусторонний список: некорректное удаление элемента
    #38308772
Фотография Compositum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly MoskovskyCompositumРабочий вариант такой
Рабочий вариант такой: std::list
Я выполняю задания по книге Стровструпа. С их помощью он разъясняет работу STL, постепенно усложняя реализацию от простого к более сложному. О наличии std::list я в курсе.
...
Рейтинг: 0 / 0
Двусторонний список: некорректное удаление элемента
    #38309086
sherzod_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Compositum,

Какой-то у вас смешанный стиль. Это плохо. Ну в смысле на это стоит затачиваться уже в самом начале, соблюдать чистоту стиля.

Вроде бы c-style список, и на! тебе исключения, new, namespaces, функции-члены. Постепенное усложнение должно выглядеть не знаю как, но точно не так. Ну хотя бы использовать класс, скрыть указатели за асбтракцией итератора, определить типы итераторов, интенсивнее использовать const, throw спецификацию в функциях, определить уровень безопасности по исключениям для каждой функции, специфицировать стандартные алгоритмы для вашей структуры данных, ввести аллокатор, добавить шаблонность и тд и тп.

Это для плюсплюсстайл.

Для си-стайла, тоже совсем другой путь, выкинуть все плюс-специфик, сделать общий node на основе наследования, перенести поле данных в придаток POD структуры (в конец, в виде char[1]), определить макросы для основных операций, написать килотонны макросов, сломать моск, превратиться в гик, начать использовать гиккод, уйти в лес, разработать систему возврата ошибок, использовать c-style выделение памяти и тд, можно посмотреть kqueue, klist во FreeBSD.

В чем именно заключается смешение?

Исключения + new + возврат nullptr (причем неверный) из функций
new + открытые наружу указатели
namespace + struct
наименования методов из стандартной библиотеки + совершенно различные сигнатуры, несовместимость с стд алгоритмами
struct + std::string
struct + member functions + constructor
и тд.
...
Рейтинг: 0 / 0
Двусторонний список: некорректное удаление элемента
    #38309223
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sherzod_интенсивнее использовать throw спецификацию в функцияхникогда не надо использовать throw спецификацию, злостное зло эта спецификация.
sherzod_namespace + struct
struct + std::string
struct + member functions + constructor
struct то чем пугает? это тоже самое, что и класс, только с другой областью видимости по умолчанию. Больше отличий - нет.

sherzod_наименования методов из стандартной библиотеки + совершенно различные сигнатуры, несовместимость с стд алгоритмамиединственное полезное замечание, но, как я понимаю, Compositum до стд ещё не дочитал ))
...
Рейтинг: 0 / 0
Двусторонний список: некорректное удаление элемента
    #38309250
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sherzod_,

Throw specification уже отменили, забанили навсегда...

Человек явно учиться, делает на с++ базовые низко уравневые вещи из с.
Ничего плохого нет в смещении стилей.
...
Рейтинг: 0 / 0
Двусторонний список: некорректное удаление элемента
    #38309257
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sherzod_,

Это для плюсплюсстайл

К счастью, с++ стиль может быть разным, ни stl, ни итераторы шизонутые использовать вовсе не обязательно.
...
Рейтинг: 0 / 0
Двусторонний список: некорректное удаление элемента
    #38309314
Фотография Compositum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sherzod_Вроде бы c-style список, и на! тебе исключения, new, namespaces, функции-члены. Постепенное усложнение должно выглядеть не знаю как, но точно не так.
Я как-то Стровструпу больше доверяю :).
...
Рейтинг: 0 / 0
Двусторонний список: некорректное удаление элемента
    #38309935
sherzod_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
насчет throw спецификации, не надо придираться к словам, признаю не точно выразился, но имелся в виду вот этот документ
http://www.boost.org/community/exception_safety.html
и явное указание к какому уровню по безопасности по исключениям относится каждая функция член - например erase, то есть конкретно throw() без всякого списка, и его эквивалент noexcept, прошу прощения если не смог донести мысль.

Compositum, egorych

неужто Страуструп такому вот и учит, работать с си-стайл списком struct, через функции члены? И value он размещает в начале какой-бы то ни было структуры данных? А указатели на узлы после? Для вас это мелочи и вы между ними разницы не делаете? И функции не бросающие исключений у него никак не помечены, в новом или старом стандарте? И большого раздела нет, в котором он это подробно разъясняет? И детали реализации наружу выставляет? Покажите хотя бы одно место в какой либо его книге, где он в практическом примере контейнера (не для объяснения синтаксиса) использует конструктор для struct? И прямо так вот, с си-стайл списком он использует исключения?

Из какой альтернативной вселенной все эти допущения? Читайте внимательнее.

egorych, вы упустили мелочь - в си нет слова class и то что я говорил о смешении стилей, еще вы упустили из виду то, что плюсы могут компилировать си, могут использовать либы на си, да на самом деле вы многое упускаете если не делаете разницу между class и struct.


Compositum,

всего-то надо

или сделать структуру и работать с ней свободными функциями, которые работают только с узлами, не обращая внимания на данные => неизбежно задумаетесь о правильном порядке ее элементов, -конструктор, -исключения, -пространства имен, +познакомитесь с принципами наследования в си

или сделать класс, закрыть все поля реализации как минимум, потом нарастить шаблон, и все как стандартной библиотеке, +исключения, +безопасность по исключениям, +пространства имен, +шаблоны, +константность, +итераторы, +аллокаторы, -макросы, -си-стайл

все что между - посредственно и от лукавого, почему? 100500 раз обсосано и разложено страуструпами, майерсами, дипперами и др. Элементарно вот эта строчка greek_gods = insert(greek_gods, new Link("Poseidon")); дает течь, и именно из-за смешения стилей.
...
Рейтинг: 0 / 0
Двусторонний список: некорректное удаление элемента
    #38309998
Фотография Compositum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sherzod_неужто Страуструп такому вот и учит, работать с си-стайл списком struct, через функции члены? И value он размещает в начале какой-бы то ни было структуры данных? А указатели на узлы после? Для вас это мелочи и вы между ними разницы не делаете? И функции не бросающие исключений у него никак не помечены, в новом или старом стандарте? И большого раздела нет, в котором он это подробно разъясняет? И детали реализации наружу выставляет? Покажите хотя бы одно место в какой либо его книге, где он в практическом примере контейнера (не для объяснения синтаксиса) использует конструктор для struct? И прямо так вот, с си-стайл списком он использует исключения?

Из какой альтернативной вселенной все эти допущения? Читайте внимательнее.
Я уже писал: 14476725 . Книга: "Программирование. Принципы и практика использования C++", глава 17. Для того, чтобы вы могли с удобством использовать тот же класс vector, кто-то должен был его реализовать, причём реализация порой содержит большое количество C кода, работающего с указателями и т.п.
...
Рейтинг: 0 / 0
Двусторонний список: некорректное удаление элемента
    #38310062
sherzod_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CompositumЯ уже писал: 14476725 . Книга: "Программирование. Принципы и практика использования C++", глава 17. Для того, чтобы вы могли с удобством использовать тот же класс vector, кто-то должен был его реализовать, причём реализация порой содержит большое количество C кода, работающего с указателями и т.п. Вы меня не поняли. Я совсем не к тому что, зачем вам велосипед, используйте std::list или std::vector. Я всеми руками за!, тренировку в реализации, считаю что это очень полезно. Вообще вы широком смысле полезно, для понимания работы стандартных контейнеров в частности.

Я о том, что тот код который вы написали, совсем не такой как учит ну тот же Страуструп. Перепишите его используя class, закрытые члены. Не выставляйте указатели наружу. Выделяйте память под данные внутри функций-членов. Просто прочитайте мои вопросы и попробуйте на них ответить. Кстати в реализации std::vector практически нет C-стиль-кода. И он уж точно не сделан через структуру с конструктором, свободными функциями с указателями и исключениями.

А если таки хотите си-стиль, просмотрите любую реализацию динамических списков в Си, в Си каждый клепает свою реализацию заточенную под задачу(, они все однообразные), и правильно делает.
...
Рейтинг: 0 / 0
Двусторонний список: некорректное удаление элемента
    #38310089
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sherzod_на самом деле вы многое упускаете если не делаете разницу между class и struct.что именно я упускаю? это одно и то же в С++.

sherzod_или сделать структуру и работать с ней свободными функциями, которые работают только с узлами, не обращая внимания на данные => неизбежно задумаетесь о правильном порядке ее элементов, -конструктор, -исключения, -пространства имен, +познакомитесь с принципами наследования в си

или сделать класс, закрыть все поля реализации как минимум, потом нарастить шаблон, и все как стандартной библиотеке, +исключения, +безопасность по исключениям, +пространства имен, +шаблоны, +константность, +итераторы, +аллокаторы, -макросы, -си-стайлэто чтобы жизнь малиной не казалась, что ли? Если есть необходимость в инкапсуляции - используете class, если нет, то берёте struct и не мучаете ни себя, ни окружающих, если не требуется, чтобы структура была POD, рисуете туда конструкторы, деструкторы и прочие, необходимые операторы и функции. Ваше "или-или" - это от лукавого.
А учебный пример - на то и учебный пример, чтобы объяснять какую-то одну концепцию, в данном случае, как я понимаю, реализацию двусвязного списка. Понятное дело, что он в промышленный код не годится, но у него другая задача.
Я думаю, начнётся глава 18, и Compositum будет свой С-костыль переделывать в С++, и спрашивать у нас, как там теперь чего )) не бегите впереди паровоза.

А чтобы течь устранить, ему надо корректный деструктор к своему списку дописать, всего делов-то.
...
Рейтинг: 0 / 0
Двусторонний список: некорректное удаление элемента
    #38310216
sherzod_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
egorychА чтобы течь устранить, ему надо корректный деструктор к своему списку дописать, всего делов-то. Причем там деструктор вообще? Правильное очищение списка еще даже не выносилось на обсуждение. Вот об этом я и говорю что вы упускаете многое нарушая принцип инкапсуляции.

Нигде не встречал объекты с открытыми внутренними полями, ну кроме винды конечно, там всякие POINT-ы, RECT-ы, считаю идеальное собрание примеров того как не нужно писать на плюсах.
...
Рейтинг: 0 / 0
Двусторонний список: некорректное удаление элемента
    #38310230
Фотография Compositum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sherzod_,

Вы из каких соображений не читаете то, что вам пишут? Вопрос риторический...
sherzod_Я о том, что тот код который вы написали, совсем не такой как учит ну тот же Страуструп.
Ну да, а K&R написали не Керниган и Ритчи... Вы, прежде чем подобные вещи писать, откройте обозначенную книгу.
...
Рейтинг: 0 / 0
Двусторонний список: некорректное удаление элемента
    #38310290
sherzod_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Compositumsherzod_,
Вы из каких соображений не читаете то, что вам пишут? Вопрос риторический...
sherzod_Я о том, что тот код который вы написали, совсем не такой как учит ну тот же Страуструп.
Ну да, а K&R написали не Керниган и Ритчи... Вы, прежде чем подобные вещи писать, откройте обозначенную книгу. Открыл, увидел, ахнул. Виноват, есть там подобный код. Мне было сложно в это поверить в свете вот этого , где разжевано на каких принципах должны быть построены контейнеры, в свете "язык С++" где нет ни единой структуры с конструктором.

Насчет использования исключений в си-стайл списке я уже собрался было написать ему гневное письмо, за то что я так обломался из-за него, но вглядевшись в его вариант, слава богу я там этого не обнаружил. Ровно как и namespace-ов, проблем с утечкой (и я не об освобождении списка). У меня есть твердое представление о том что он пропагандирует, по его лекциям, статьям и книгам, поэтому я до сих пор уверен, в тех вещах о которых говорю. Вы можете почитать о них во всех источниках которые я приводил в этой теме. Кроме того вы к ним придете в следующей главе. Виноват отчасти бессмысленная критика, дань моему ЧСВ и желанию поспорить.

Я ошибся в двух вещах, я был уверен что Страуструп не будет добавлять конструктор с аргументами в си-стайл список меняя POD тип, и в том что он не будет располагать поле данных первым. Возможно он вольно обошелся с учебным примером. Эталоном си-стайл динамических списков являются klist.h из FreeBSD, можете об этом почитать.

А вы самостоятельно вдумываетесь в то что вам пишут? Попунктно. (не думая: "мало ли что он там пишет, в книжке же почти как у меня"). Вопрос совсем не риторический.
...
Рейтинг: 0 / 0
Двусторонний список: некорректное удаление элемента
    #38310311
Фотография Compositum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sherzod_Насчет использования исключений в си-стайл списке я уже собрался было написать ему гневное письмо,
По прежнему невнимательно читаете. Каждая глава книги посвящена детальному рассмотрению отдельной темы. Дабы сократить объёмы кода, автор некоторые вещи, не относящиеся к тематике данной главы, обозначает упрощённо. Однако в предыдущих главах им было уделено особое внимание. Я стараюсь следовать советам, которые даёт Стровструп, так что да, я вдумываюсь в том, что мне пишут. Советы указанного автора у меня в приоритете (по вполне понятным причинам). Вы же даёте мне советы, основываясь на неполной информации. В выполняемых примерах кое-что так же делаю упрощённо, сконцентрировавшись на основной теме упражнения и не углубляясь в дебри реализации, не относящиеся к данному, конкретному заданию.
egorychЯ думаю, начнётся глава 18, и Compositum будет свой С-костыль переделывать в С++, и спрашивать у нас, как там теперь чего )) не бегите впереди паровоза.

У меня складывается устойчивое впечатление, что на форуме много "бывалых" (как они себя пытаются позиционировать) советчиков-теоретиков. Я в таких попытках смысла не вижу. Что касается "Compositum", то он хотя бы читает и не стесняется спрашивать, если чего упускает из виду. Если я что-то утверждаю, то всегда могу указать источник, откуда это взял.
...
Рейтинг: 0 / 0
Двусторонний список: некорректное удаление элемента
    #38310312
Фотография Compositum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sherzod_и в том что он не будет располагать поле данных первым
А что в этом страшного?
...
Рейтинг: 0 / 0
Двусторонний список: некорректное удаление элемента
    #38310323
Фотография Compositum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sherzod_неужто Страуструп такому вот и учит, работать с си-стайл списком struct, через функции члены? И value он размещает в начале какой-бы то ни было структуры данных? А указатели на узлы после? Для вас это мелочи и вы между ними разницы не делаете? И функции не бросающие исключений у него никак не помечены, в новом или старом стандарте? И большого раздела нет, в котором он это подробно разъясняет? И детали реализации наружу выставляет? Покажите хотя бы одно место в какой либо его книге, где он в практическом примере контейнера (не для объяснения синтаксиса) использует конструктор для struct? И прямо так вот, с си-стайл списком он использует исключения?
Полагаю, что ответы на свои вопросы вы уже увидели в коде обозначенной мною главы.
sherzod_И функции не бросающие исключений у него никак не помечены, в новом или старом стандарте? Пока этой информации я не видел. И как они помечаются? В C++ классы, методы и свойства можно помечать различными атрибутами, но как это делается в C++ я пока не знаю.
...
Рейтинг: 0 / 0
Двусторонний список: некорректное удаление элемента
    #38310327
Фотография Compositum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sherzod_мало ли что он там пишет, в книжке же почти как у меня
Вы в моём коде обнаружили ошибку, которую я прозевал? Если "да" - буду признателен за указание оной (или оных).

Спасибо.
...
Рейтинг: 0 / 0
Двусторонний список: некорректное удаление элемента
    #38310328
Фотография Compositum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CompositumВ C++ классы, методы и свойства можно помечать различными атрибутами,
очепятка, я имел в виду C#. :)
...
Рейтинг: 0 / 0
Двусторонний список: некорректное удаление элемента
    #38310384
sherzod_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Compositum,

Видимо я действительно слишком серьезно отнесся к учебному коду. Урок получен, спасибо.
...
Рейтинг: 0 / 0
Двусторонний список: некорректное удаление элемента
    #38310590
Фотография Compositum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivThrow specification уже отменили, забанили навсегда...
Можно поподробней?
...
Рейтинг: 0 / 0
Двусторонний список: некорректное удаление элемента
    #38310623
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CompositumЧто касается "Compositum", то он хотя бы читает и не стесняется спрашивать, если чего упускает из виду.и правильно делает, только так и можно чему то научиться )) успехов!
...
Рейтинг: 0 / 0
Двусторонний список: некорректное удаление элемента
    #38311194
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CompositumMasterZivThrow specification уже отменили, забанили навсегда...
Можно поподробней?

В новом стандарте 11 года спецификации исключений объявили depricated feature, компилятор видимо не должен на них ругаться,
но и ничего делать по ним не обязан, а в будущем их возможно вообще удалят.

Читать, например, тут:
http://msdn.microsoft.com/en-us/library/wfa0edys.aspx
...
Рейтинг: 0 / 0
Двусторонний список: некорректное удаление элемента
    #38311282
Фотография Compositum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivВ новом стандарте 11 года спецификации исключений объявили depricated feature, компилятор видимо не должен на них ругаться,
но и ничего делать по ним не обязан, а в будущем их возможно вообще удалят.

Читать, например, тут:
http://msdn.microsoft.com/en-us/library/wfa0edys.aspx
Спасибо, полезная информация.
...
Рейтинг: 0 / 0
27 сообщений из 27, показаны все 2 страниц
Форумы / C++ [игнор отключен] [закрыт для гостей] / Двусторонний список: некорректное удаление элемента
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]