Переключение на Главную Страницу Страницы: [1] 2  ОтправитьПечать
Горячая тема (более 10 ответов) Хотелка по классу Вектор (число прочтений - 8387 )
Nick
God Member
*****
Отсутствует



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Хотелка по классу Вектор
22. Июля 2008 :: 08:34
Печать  
Хотелось бы метод Сравнить(<СЧемСравниваем>)

Метод сравнивает два вектора поэлементно, возвращает позицию, с которой они отличаются, если все элементы равны возвращает -1

Реально такое реализовать?
  
Наверх
ICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Хотелка по классу Вектор
Ответ #1 - 22. Июля 2008 :: 08:38
Печать  
Вполне Улыбка
Михаил, как думаешь - это лучше сделать общим методом всех коллекций типа СравнитьЭлементы() или отдельным классом-набором алгоритмов?
Ну т.е. чтобы можно было сравнивать разные коллекции на совпадение элементов Улыбка
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer &amp;&amp; tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Хотелка по классу Вектор
Ответ #2 - 22. Июля 2008 :: 08:40
Печать  
Ну вообще-то, это не в раздел "разработка". Подмигивание, хотя сами хотелки по Векторам и АссоциативнымВекторам приветствую.
Например, у меня в планах есть поиск значений и размышляю, нужны ли операции над регионами (а не над целыми векторами).
--
Чтобы сравнивать нужна функция сравнения.
В принципе, у меня есть такая, но контексты сравнивать я не буду.
Если в вектор положить две ИТ - их я сравнивать не буду.
В таком виде принимается?
  

De quelle planète es-tu?
Наверх
 
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Хотелка по классу Вектор
Ответ #3 - 22. Июля 2008 :: 08:41
Печать  
artbear писал(а) 22. Июля 2008 :: 08:38:
Вполне Улыбка
Михаил, как думаешь - это лучше сделать общим методом всех коллекций типа СравнитьЭлементы() или отдельным классом-набором алгоритмов?
Ну т.е. чтобы можно было сравнивать разные коллекции на совпадение элементов Улыбка

Это очень тонкий момент (разделение на общую и конкретную части).
Сходу нельзя его решать.

Поэтому простой вопрос "как думаешь" на самом деле сложен.
Думаю хорошо, спасибо Улыбка но ответить пока не готов.
  

De quelle planète es-tu?
Наверх
 
IP записан
 
Nick
God Member
*****
Отсутствует



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Re: Хотелка по классу Вектор
Ответ #4 - 22. Июля 2008 :: 08:44
Печать  
kms писал(а) 22. Июля 2008 :: 08:40:
Если в вектор положить две ИТ - их я сравнивать не буду.
В таком виде принимается?


А если объекты типа Справочник, Документ....?
  
Наверх
ICQ  
IP записан
 
Nick
God Member
*****
Отсутствует



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Re: Хотелка по классу Вектор
Ответ #5 - 22. Июля 2008 :: 08:49
Печать  
kms писал(а) 22. Июля 2008 :: 08:40:
Чтобы сравнивать нужна функция сравнения.

Может функцию сравнения по аналогии с:
[+] 3813 (open) ИТ: Хотелка ЗаполнитьКолонку(вариант 4) - поддержка v7Lua.dll 1.0.1.3 by steban
  
Наверх
ICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Хотелка по классу Вектор
Ответ #6 - 22. Июля 2008 :: 08:50
Печать  
kms писал(а) 22. Июля 2008 :: 08:40:
Чтобы сравнивать нужна функция сравнения.
В принципе, у меня есть такая, но контексты сравнивать я не буду.
Если в вектор положить две ИТ - их я сравнивать не буду.
В таком виде принимается?

+1
Т.е. сравниваем объекты, чей тип значения < 100, согласен ?
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer &amp;&amp; tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Хотелка по классу Вектор
Ответ #7 - 22. Июля 2008 :: 08:52
Печать  
Nick писал(а) 22. Июля 2008 :: 08:49:
kms писал(а) 22. Июля 2008 :: 08:40:
Чтобы сравнивать нужна функция сравнения.

Может функцию сравнения по аналогии с:
[+] 3813 (open) ИТ: Хотелка ЗаполнитьКолонку(вариант 4) - поддержка v7Lua.dll 1.0.1.3 by steban

+1
Да, постепенно приходим к необходимости задавать спец.функторы для различных алгоритмов.

ЗЫ ну прямой дорогой идем к std::1С++ Улыбка
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer &amp;&amp; tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
Nick
God Member
*****
Отсутствует



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Re: Хотелка по классу Вектор
Ответ #8 - 22. Июля 2008 :: 08:55
Печать  
Цитата:
Т.е. сравниваем объекты, чей тип значения < 100, согласен ?

Согласен.
С другой стороны можно сравнивать объекты, если тип значения первого < 100, а второго равен 100?
Т.е. такие объекты всегда не равны?
  
Наверх
ICQ  
IP записан
 
Nick
God Member
*****
Отсутствует



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Re: Хотелка по классу Вектор
Ответ #9 - 22. Июля 2008 :: 09:03
Печать  
баг регить?
  
Наверх
ICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Хотелка по классу Вектор
Ответ #10 - 22. Июля 2008 :: 09:04
Печать  
Конечно, если тип значений отличается, они различны.
И даже пустые значения разных типов мы вроде как считаем отличными Улыбка

Да, заведи баг обязательно.
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer &amp;&amp; tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
Nick
God Member
*****
Отсутствует



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Re: Хотелка по классу Вектор
Ответ #11 - 22. Июля 2008 :: 09:14
Печать  
Баг зарегил:
http://www.1cpp.ru/bugs/show_bug.cgi?id=3999

Номер у бага примечательный Подмигивание
  
Наверх
ICQ  
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Хотелка по классу Вектор
Ответ #12 - 22. Июля 2008 :: 15:18
Печать  
Nick писал(а) 22. Июля 2008 :: 08:49:
kms писал(а) 22. Июля 2008 :: 08:40:
Чтобы сравнивать нужна функция сравнения.

Может функцию сравнения по аналогии с:
[+] 3813 (open) ИТ: Хотелка ЗаполнитьКолонку(вариант 4) - поддержка v7Lua.dll 1.0.1.3 by steban

Ну нет, это очень медленно.
В таком ключе можешь сам на lua полное сравнение набросать.

Но в плане реализации сравнений у нас есть выстраданный и проверенный пример - это ИТ.
Функторы сравнения ИТ уже использованы при сортировке векторов.
  

De quelle planète es-tu?
Наверх
 
IP записан
 
Nick
God Member
*****
Отсутствует



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Re: Хотелка по классу Вектор
Ответ #13 - 23. Июля 2008 :: 02:05
Печать  
Что то я не пойму, написал простенький тест на сравнеие векторов:

Код
Выбрать все
Функция Сравнить_1с(Вектор1, Вектор2)
	Перем чКол;

	чКол = Вектор1.Количество();
	Если чКол<> Вектор2.Количество() Тогда
		Возврат чКол;
	КонецЕсли;

	Для к = 0 По чКол - 1 Цикл
		Если Вектор1.Получить(к) <>  Вектор2.Получить(к) Тогда
			Возврат к;
		КонецЕсли;
	КонецЦикла;

	Возврат -1;
КонецФункции	// Сравнить_1с



//*******************************************
Процедура Сформировать()
	Луа = СоздатьОбъект("LuaRef");
	Луа.dostring("
	|
	|Compare = function(Вектор1, Вектор2)
	|			local cnt = Вектор1.Количество()
	|			if (cnt ~= Вектор2.Количество()) then
	|				return cnt
	|			end
	|
	|			for i = 0, cnt-1 do
	|				if (Вектор1.Получить(i) ~=  Вектор2.Получить(i)) then
	|					return i
	|				end
	|			end
	|			return - 1
	|		end
	|");

	Луа=Луа._G;


	Вектор1 = СоздатьОбъект("Вектор");
	Вектор1.Добавить(1);
	Вектор1.Добавить(2);
	Вектор1.Добавить(3);
	Вектор1.Добавить(4);
	Вектор1.Добавить(10);

	Вектор2 = СоздатьОбъект("Вектор");
	Вектор2.Добавить(1);
	Вектор2.Добавить(2);
	Вектор2.Добавить(3);
	Вектор2.Добавить(4);
	Вектор2.Добавить(5);

	н = 100000;
	_Время = _GetPerformanceCounter();
	Для к = 1 по н Цикл
		Сравнить_1с(Вектор1, Вектор2);
	КонецЦикла;

	Сообщить("Время сравнения 1с:" + (_GetPerformanceCounter() - _Время));

	_Время = _GetPerformanceCounter();
	Для к = 1 по н Цикл
		Луа.Compare(Вектор1, Вектор2);
	КонецЦикла;

	Сообщить("Время сравнения LUA:" + (_GetPerformanceCounter() - _Время));

КонецПроцедуры
 



Так вот скорость время для LUA раз в 5 больше чем для 1с, может я не правильно её готовлю? Печаль
« Последняя редакция: 23. Июля 2008 :: 03:39 - Nick »  

Test_lua_compare_001.ert ( 7 KB | Загрузки )
Наверх
ICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Хотелка по классу Вектор
Ответ #14 - 23. Июля 2008 :: 03:27
Печать  
Nick писал(а) 23. Июля 2008 :: 02:05:
Что то я не пойму, написал простенький тест на сравнеие векторов:

Так вот скорость для LUA раз в 5 больше чем для 1с, может я не правильно её готовлю? Печаль

Вот поэтому Степан ее и продвигает Улыбка, т.к. тут наверняка скорость интерпретации LUA играет большую роль.
А для VBScript/JScript можешь проверить то же сравнение?
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer &amp;&amp; tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
Переключение на Главную Страницу Страницы: [1] 2 
ОтправитьПечать