|
3 / 3 / 5
Регистрация: 18.01.2011
Сообщений: 131
|
|||||||||||
Позиция элемента в контейнере STL кон. SET, поиск контейнер set словарь позиция21.04.2012, 20:09. Показов 14410. Ответов 31
Метки нет (Все метки)
Есть код №1. Он выводить на экран позицию нужного мне слова (только если в середине 1 слово а не 2 и больше например только "privet". А когда "privet kak dela" - он не хочет работать), которое я ищу в самом контейнере. Каким образом можно сделать такое, только из контейнером set и не 1 слово в середине а несколько, хотя б 3. Позиция данного элемента нужна, что б по позиции вывести нужные мне слова в другом контейнере, того ж типа.
#1
Или каким другим способом можно это все реализовать ???
0
|
|||||||||||
| 21.04.2012, 20:09 | |
|
Ответы с готовыми решениями:
31
STL, контейнер set STL контейнер set, вставка элементов нужно подобрать контейнер аналогичный set в stl |
|
1500 / 1146 / 165
Регистрация: 05.12.2011
Сообщений: 2,279
|
|
| 22.04.2012, 00:04 | |
|
второй код и компилироватся то не должен.
я вот не понял какую задачу вы решаете. вот допустим у вас такие данные в сете: set<string> v1; v1.insert("11, 22, 33"); v1.insert("44, 44, 66"); далее вы вводите какое-то слово или что? можете указать? и что и в каком контейнере вы хотите получить после ввода этого слова?
0
|
|
|
3 / 3 / 5
Регистрация: 18.01.2011
Сообщений: 131
|
||
| 22.04.2012, 00:16 [ТС] | ||
|
string word; cin >> word; дальше я с помощью функ. find() начинаю искать во всех, что есть в контейнере данных совпадения, если нахожу, мне надо только 1-е совпадение, других не будет никак по моих данных, и когда найду, у меня будет позиция этого элемента и соответсвенно к данной позиции я выведу другое слов в другом контейнере по данной позиции.
0
|
||
|
1500 / 1146 / 165
Регистрация: 05.12.2011
Сообщений: 2,279
|
|
| 22.04.2012, 00:20 | |
|
хотелось бы более конкретный кейс.
вот вы ввели в word слово 22. так? при поиске в сете этой строки ничего не найдется. при поиске подстроки - найдется первый элемент сета. что должно происходить дальше?
0
|
|
|
3 / 3 / 5
Регистрация: 18.01.2011
Сообщений: 131
|
|||||||
| 22.04.2012, 00:32 [ТС] | |||||||
|
это всё часть моего курсака, мне просто надо реализовать словарь анг-рус. слова должны быть в 2-х асц. кон. типу set Добавлено через 3 минуты вот мой другой код, который написал - мне кажется что он ну ппс тупо написан так как СТЛ начал изучать, точнее для курсака и всё ... в теории этот код должен работать норм но он у меня чуть чуть криво работает, сил уже нету думать завтра попробую дописать нормально
0
|
|||||||
|
1500 / 1146 / 165
Регистрация: 05.12.2011
Сообщений: 2,279
|
|
| 22.04.2012, 00:48 | |
|
Все равно вы криво пытаетесь объяснить то, что вам нужно. Вы описываете шаги того, что делаете, а т.к. эти шаги кривые - из этого описание и задача в целом непонятна. Поробуйте не в терминах стл компонент это объяснить, а более просто.
Например: У вас есть два массива со словами на разных языках. Вы вводите слово и ищете позицию этого слова в первом массиве. Потом выводите слово, которое находится в такой же поциии, но во втором массиве. Вот что меня сбивает столку из всего того, что есть в этом посте: В сете вы храните строки из нескольких слов. Далее идет поиск какой-то введенной строки. Пусть это будет inputStr. Идет поиск целиком этой строки или строки в сете должны содержать введенную подстроку? Например в сете хранится "11, 22, 33", я ввел 22. Что мне должен дать поиск в этом сете строки 22? Поиск неудачен, потому что "11, 22, 33" != "22" или удачен, потому что 22 - это подстрока того, что находится в первой позиции сета? Допустим поиск удачен. Что далее должно проиходить с этой строкой "11, 22, 33", которая в первой позиции сета? (Вот это допущение для поиска подстрок в строках, которые в сете. Тогда непонятно, зачем пользоватся сетом, если все равно нужно обрабатывать каждый элемент сета и имеющаяся у класса сет функция поиска все равно не подходит)
0
|
|
|
3 / 3 / 5
Регистрация: 18.01.2011
Сообщений: 131
|
|
| 22.04.2012, 01:06 [ТС] | |
|
Например:
У вас есть два массива со словами на разных языках. Вы вводите слово и ищете позицию этого слова в первом массиве. Потом выводите слово, которое находится в такой же поциии, но во втором массиве. ДА Вот что меня сбивает столку из всего того, что есть в этом посте: В сете вы храните строки из нескольких слов. Далее идет поиск какой-то введенной строки. Пусть это будет inputStr. Идет поиск целиком этой строки или строки в сете должны содержать введенную подстроку? Например в сете хранится "11, 22, 33", я ввел 22. Что мне должен дать поиск в этом сете строки 22? Поиск неудачен, потому что "11, 22, 33" != "22" или удачен, потому что 22 - это подстрока того, что находится в первой позиции сета? И тут да, поиск будет удачен "22" будет подстрокой в "11, 22, 33" значение найденное и соотвественно позиция. Сет чисел - єто пример просто. У меня будет 2 контейнера : 1 для рус. слов другой для анг. например : 1 кон. konteiner_ENG[0] {"cat, kot, coto"}; konteiner_ENG[1] {"horse, hors, KoHb"}; 2 кон. konteriner_RUS[0] {"кот, кошка, котяра"}; konteriner_RUS[1] {"конь, пегас, коняра"}; тоесть слово horse нашло в konteiner_ENG[1] {"horse, hors, KoHb"}; индекс тут 1 (но у меня будет не индекс а ИТЕРАТОР (позиция его))и оно выводить все слова (синонимы) из другого контейнера с индеком 1 konteriner_RUS[1] {"конь, пегас, коняра"}; то есть оба контейнера не обязательно должы быть связаны, а только выводить нужное мне значение по индексу, ну это я так понимаю .
0
|
|
|
1500 / 1146 / 165
Регистрация: 05.12.2011
Сообщений: 2,279
|
|||||||||||
| 22.04.2012, 02:27 | |||||||||||
|
ну может тогда вот так:
Возможно прокатит контейнер (не ассоциативный, он в этом случае не такой эффективный, как последовательные) контейнер пары(строка, строка). Поиск в контейнере будет идти по первой (ключевой строке). Если она найдена - выводится вторая (ассоциативная). Но имхо такой подход менее гибкий. Добавлено через 41 минуту Все таки правильно искать полное совпадение слов. При поиске подстроки есть вероятность что попадется ненужное слово. При поиске слова пар может подойти паровоз. Вот переделал маленько, но суть осталась та же.
1
|
|||||||||||
|
3 / 3 / 5
Регистрация: 18.01.2011
Сообщений: 131
|
|
| 22.04.2012, 10:01 [ТС] | |
|
спасибо за код, конечно пользу извлеку, но код который я пишу а именно по ас. кон. SET для курсака, мне именно надо написать для кон. SET, точнее база слов должна там быть для рус. и анг слов соответственно.
0
|
|
|
Делаю внезапно и красиво
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
|
||||||
| 22.04.2012, 10:10 | ||||||
Не тупи.
0
|
||||||
|
3 / 3 / 5
Регистрация: 18.01.2011
Сообщений: 131
|
|||||||
| 22.04.2012, 10:26 [ТС] | |||||||
|
Добавлено через 2 минуты а вот и код, который мне вопше не нравится, точнее такой способ как я написал, но ОН РАБОТАЕТ ТАК КАК Я ХОЧУ, сделаю другую часть курсака скину сюда и покажу как я хотел чтоб это всё работало !
НО если в контейнере есть РУС. слова так как у меня выше АНГ то поиск не хочет работать =(((((((
0
|
|||||||
|
Делаю внезапно и красиво
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
|
|||
| 22.04.2012, 10:46 | |||
|
Ты вставил строку "privet, kak, dela" и итератор вернёт эту строку целиком, а не по словам.
0
|
|||
|
3 / 3 / 5
Регистрация: 18.01.2011
Сообщений: 131
|
||
| 22.04.2012, 10:56 [ТС] | ||
|
если не верите закиньте в компилятор код. Подскажите если знаете как при вводе слов на рус. не выводило иероглифы, с кодировкой не лады
0
|
||
|
Делаю внезапно и красиво
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
|
|||
| 22.04.2012, 11:28 | |||
|
Функция find возвращает позицию в символах, а не в словах. А судя по заданию, тебе нужно заменить слово из одной строки, на слово из другой. Если слова в строках имеют разную длину, то сделать этого у тебя не получится при таком алгоритме.
0
|
|||
|
3 / 3 / 5
Регистрация: 18.01.2011
Сообщений: 131
|
||
| 22.04.2012, 11:35 [ТС] | ||
|
Вот сам же говоришь, что не надо, а при этом возвращаешь строку... И зачем через запятую слова задаёшь? Кроме пустой траты байт это ничего тебе не даёт. Функция find возвращает позицию в символах, а не в словах. А судя по заданию, тебе нужно заменить слово из одной строки, на слово из другой. Если слова в строках имеют разную длину, то сделать этого у тебя не получится при таком алгоритме. блин я уже тут вопще запутался ... нет я делаю курсак и мне не надо замены вот че я делаю
0
|
||
|
Делаю внезапно и красиво
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
|
|
| 22.04.2012, 11:55 | |
|
0
|
|
|
3 / 3 / 5
Регистрация: 18.01.2011
Сообщений: 131
|
||
| 22.04.2012, 12:08 [ТС] | ||
|
например первая вставка контейнер АНГ слов "cat, cеt ,cyt" а в Рус. контейнер "кот, кет, кут " ну и так дальше. Потом делаю поиск в контейнер например в контейнере АНГ. ввожу слово cat оно в алгоритме моему начинает проверять вместимость контейнера, когда находит в другой итератор записывает итератор данной позиции на которой нашло совпадение, и соответственно к данному итератор я вывожу слова из контейнера РУС, так наоборот.
0
|
||
|
Делаю внезапно и красиво
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
|
||||||||
| 22.04.2012, 12:14 | ||||||||
|
size_t - беззнаковое Сравнивать нужно так if( std::string::npos != find(...) ) Если тебе возвращается знаковое - выкинь свой компилятор. Вот тебе код для тестирования компилятора:
"cat cet cyt" и "кошка кет кут" - и всё, ничего не работает.Если ты захочешь перевести второе слово, то вместо "кет" у тебя получится "а к". Т.е. тебе нужно искать не номер буквы, с которого начинается слово, а именно номер слова.
0
|
||||||||
|
3 / 3 / 5
Регистрация: 18.01.2011
Сообщений: 131
|
||
| 22.04.2012, 12:18 [ТС] | ||
|
у вас так
Сравнивать нужно так if( std::string::npos != find(...) ) у меня так a = text.find(word); if(a >= 0) ваш код я вижу первый раз, как он у вас работает я не знаю, но мой код даже если вы считаете что он не правильно написан он работает так как мне надо понимаете ? Добавлено через 2 минуты
0
|
||
|
Делаю внезапно и красиво
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
|
|||
| 22.04.2012, 12:23 | |||
|
http://msdn.microsoft.com/en-u... ty53k.aspx
0
|
|||
| 22.04.2012, 12:23 | |
|
Помогаю со студенческими работами здесь
20
Используя STL контейнер set заполнить массив Поиск элемента по set Контейнер set Контейнер set
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога
Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
|
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
|
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога
В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
|
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
|
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога
Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
|
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
|
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования.
Часть библиотеки BedvitCOM
Использованы. . .
|
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога
SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
|