|
супермизантроп
3941 / 2979 / 692
Регистрация: 18.04.2012
Сообщений: 8,629
|
|
Быстрый способ создания строковой переменной из значений нескольких строковых переменных26.12.2017, 21:52. Показов 5657. Ответов 71
Метки нет (Все метки)
К примеру, в javascript'e из трёх исходных строковых переменных создать одну конкатенированную рекомендуется следующим способом:
надо поместить значения исходных переменных в массив, а затем "соединить" его элементы методом join (), используя пустой разделитель '' Эта операция y = [x1, x2, x3].join (''); выполнится много быстрее, чем последовательная конкатенация трёх значений в одну переменную А как с этим обстоит дело в C++ ? Имеется ли в нём аналог метода join () и имеет ли вообще смысл этим заморачиваться? Извиняюсь за ламерский вопрос, но этот раздел вроде как для таких вопросов и предназначен, так? PS. спрашивал об этом же у "явщика", тот ответил, что для работы со строками у него есть класс "стринг-билдер", который всё это вполне эффективно делает, а как именно - ему совсем неинтересно
0
|
|
| 26.12.2017, 21:52 | |
|
Ответы с готовыми решениями:
71
Проверка значений нескольких строковых переменных
Как при выборе элемента Листбокса изменить значения нескольких строковых переменных |
|
зомбяк
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
|
|||
| 27.12.2017, 01:40 | |||
|
Добавлено через 3 минуты
0
|
|||
|
супермизантроп
3941 / 2979 / 692
Регистрация: 18.04.2012
Сообщений: 8,629
|
||
| 27.12.2017, 01:49 [ТС] | ||
|
0
|
||
|
зомбяк
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
|
||
| 27.12.2017, 01:50 | ||
|
0
|
||
|
супермизантроп
3941 / 2979 / 692
Регистрация: 18.04.2012
Сообщений: 8,629
|
|
| 27.12.2017, 01:54 [ТС] | |
|
массивы подстрок из 2-х, 3-х и т. д. символов должны сохраниться после прохода по строке (после выхода из цикла)
и ещё -- строка после окончания работы цикла более будет вовсе недоступна (она "одноразовая")
0
|
|
|
1550 / 877 / 179
Регистрация: 05.12.2015
Сообщений: 2,555
|
|
| 27.12.2017, 01:57 | |
|
kalabuni, Сколько различных длин подстрок нужно и каких?
0
|
|
|
супермизантроп
3941 / 2979 / 692
Регистрация: 18.04.2012
Сообщений: 8,629
|
|||
| 27.12.2017, 02:11 [ТС] | |||
![]() Добавлено через 3 минуты несколько массивов, клиент будет выбирать - галочки поставит: "от двух до четырёх", "от двух до пяти", "от двух до семидесяти"... всегда известен только нижний предел - константа 2 мне не нужна от вас реализация на си++ мне нужно понять -- как описать алгоритм для реализации этой задачи на си++ Добавлено через 6 минут на javascript'e эту задачу я уже решил, показал описание алгоритма и демонстрацию работы программисту-сишнику, чтобы он переложил это на си++, он впал в ступор... вот я к вам и обращаюсь за помощью
0
|
|||
|
зомбяк
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
|
||||||
| 27.12.2017, 02:20 | ||||||
0
|
||||||
|
1550 / 877 / 179
Регистрация: 05.12.2015
Сообщений: 2,555
|
|
| 27.12.2017, 02:22 | |
|
kalabuni,
Во первых нужен вектор который содержит unordered_setы. Потом 1) Можно взять промежуточную строку, длиной, совпадающей с максимальной подстрокой и инсертить в сеты подстроки этой подстроки (с конца). На каждом вводе символа push_back, если размер превышает максимальный убирать нулевой символ (это плохо с т.з. быстроты). 2) Можно ускорить взять столько стрингов - сколько нужно подстрок. Добиться заполнения их лесенкой. На каждом символе добавлять символ в конец каждого и инсертить в соответствующий сет. Если размер максимальный стирать строку. Это плохо с т.з. памяти Можно сделать кольцевой буфер. Если сделать его двойной длины (с повторением данных), опять же substr.
0
|
|
|
1550 / 877 / 179
Регистрация: 05.12.2015
Сообщений: 2,555
|
|
| 27.12.2017, 02:22 | |
|
Дубль.
0
|
|
|
зомбяк
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
|
|
| 27.12.2017, 02:39 | |
|
Обращаться к строкам как в
arr[i][j]Добавлено через 10 минут Хоть мой способ значительно медленнее чем предлагает avgoor, но самый просто реализуемый. Для быстрых способов исходную строку либо её копию сохранять таки надо, а массивы делать не массивами строк, а массивами указателей на первые буквы слов в исходной строке.
0
|
|
|
супермизантроп
3941 / 2979 / 692
Регистрация: 18.04.2012
Сообщений: 8,629
|
||
| 27.12.2017, 02:42 [ТС] | ||
|
и о каких-таких "словах" вы всё пишете уже не в первый раз? я оперирую понятиями "строка" и "подстрока" (часть этой самой "строки")
0
|
||
|
1550 / 877 / 179
Регистрация: 05.12.2015
Сообщений: 2,555
|
||||
| 27.12.2017, 02:46 | ||||
|
Добавлено через 1 минуту
0
|
||||
|
супермизантроп
3941 / 2979 / 692
Регистрация: 18.04.2012
Сообщений: 8,629
|
|
| 27.12.2017, 02:53 [ТС] | |
|
разумеется, искомые массивы для удобства к ним обращения в процессе работы программы сведены в один массив массивов
в a [2] хранится массив всех 2-хсимвольных подстрок, в a [3] -- массив всех 3-хсимвольных и т.д.
0
|
|
|
1550 / 877 / 179
Регистрация: 05.12.2015
Сообщений: 2,555
|
|
| 27.12.2017, 02:58 | |
|
kalabuni, операция поиска в массиве - дорогая (n). Операция поиска в отсортированном массиве - дешевле (log n) зато дорогой получается операция вставки. Если вы используете для хранения промежуточных результатов массивы (и ищете на каждой итерации, есть ли в них уже искомая строка) - попытка оптимизировать строковые операции - это экономия на спичках.
0
|
|
|
зомбяк
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
|
||||||
| 27.12.2017, 03:20 | ||||||
|
Возможно теперь правильно понял что требуется:
0
|
||||||
|
1550 / 877 / 179
Регистрация: 05.12.2015
Сообщений: 2,555
|
|
| 27.12.2017, 03:23 | |
|
TRam_, Выводит АB CD .... А где BC?
0
|
|
|
супермизантроп
3941 / 2979 / 692
Регистрация: 18.04.2012
Сообщений: 8,629
|
||
| 27.12.2017, 03:25 [ТС] | ||
|
на шаге, когда я прочитываю символ C, у меня уже окончательно имеется элемент AB 2-хсимвольного массива (назову таковые дабл-элементами), и именно на этом шаге я использую этот дабл-элемент как первую часть вновь создаваемого трипл-элемента ABC, затем создаю новый дабл-элемент BC, который на следующем шаге используется как первая часть трипл-элемента BCD и так далее и всякий раз (n-1)-элемент используется для создания n-элемента имхо, всё же просто и логично, разве нет?
0
|
||
|
1550 / 877 / 179
Регистрация: 05.12.2015
Сообщений: 2,555
|
|
| 27.12.2017, 03:52 | |
|
kalabuni, в достаточно длинной строке подстрока, например, "AB" встретится много раз. Вы уверены, что в массиве подстрок она тоже должна встречаться много раз? Обычно, в таких заданиях требуют однократного вывода. Приведите полный текст задачи.
0
|
|
|
супермизантроп
3941 / 2979 / 692
Регистрация: 18.04.2012
Сообщений: 8,629
|
|
| 27.12.2017, 03:59 [ТС] | |
|
0
|
|
|
1550 / 877 / 179
Регистрация: 05.12.2015
Сообщений: 2,555
|
|
| 27.12.2017, 04:05 | |
|
kalabuni, а мне покзалось что вы написали "суть задачи" а не полный текст. Откуда эта задача?
0
|
|
| 27.12.2017, 04:05 | |
|
Помогаю со студенческими работами здесь
40
Сложение значений переменных как строковых при их численном значении Получить значение переменной из потока без создания глобальных переменных Вывод значений нескольких переменных Ввод нескольких значений переменных Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Модель здравосохранения 14. Собираем всю модель вместе.
anaschu 22.05.2026
Модель собрана. В будущих постах на видео я покажу, как она работает.
В этом посте запускаем её, проверяем результаты и разбираем что можно с ней делать дальше.
Перед запуском проверяем. . .
|
Модель здравоохранения 13. Добавление самой системы здравоохранения.
anaschu 22.05.2026
В предыдущем посте мы настроили болезни. Теперь добавим события, которые управляют здоровьем всего коллектива, а также настроим рабочий график и расчёт финансов.
В Main создаём четыре события. . . .
|
Модель здравоохранения 12. добавление болезней через ресурпул, как аварии
anaschu 22.05.2026
Болезни — это ключевая часть нашей модели. Нам нужно, чтобы работник периодически уходил на больничный, его задание при этом зависало, а после выздоровления работа возобновлялась. Реализуем это двумя. . .
|
Модель здравоохранения 11. Создаём классы Задание и Работник
anaschu 22.05.2026
В AnyLogic каждая заявка и каждый ресурс — это объект определённого класса. Нам нужно создать два класса: Задание (заявка) и Работник (ресурс).
Класс Задание
В дереве проекта нажимаем правой. . .
|
|
Модель здравоохранения 10. Новая модель, смотрим, как добавлять логические блоки, и что писать внутри
anaschu 22.05.2026
Открываем AnyLogic, создаём новый проект. В дереве проекта появляется класс Main — это главный агент, в котором будет жить вся наша логика.
Палитра блоков
Слева находится палитра. Нас интересует. . .
|
модель ЗдравоСохранения 9. Новая модель, разбираемся, как ее создавать
anaschu 22.05.2026
В этой серии постов мы построим модель небольшого рабочего коллектива. Сотрудники получают задания, выполняют их, иногда болеют — и мы хотим посчитать, сколько это стоит компании.
Метод. . .
|
[golang] Linked list
alhaos 22.05.2026
Связный список / Linked list
Связный список структура данных позволяющая хранить список значений, в отличии от массива в памяти хранится не сплошным куском, а отдельными частями которые ссылаются. . .
|
[golang] Двоичная куча, min-heap
alhaos 20.05.2026
Двоичная куча
Двоичная куча — структура данных, которая всегда держит самый важный элемент наготове.
Представьте очередь к хилеру в игре, и очередь из игроков в приоритете те у кого меньше. . .
|