Форум программистов, компьютерный форум CyberForum.ru

STL и string - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Ввод знака + или - http://www.cyberforum.ru/cpp-beginners/thread1198758.html
Здравствуйте есть код #include <iostream> using namespace std; int main() { int a1=0;
C++ Поиск одной переменной под другой Добрые день, сразу прошу извинить за неопределенное название темы!! Вопрос такой: человек вводит число 42.0 например, а под этим числом обьявлена переменная num7: float num5 = 43.5; char* numm5 = "Андрей"; float num6 = 42.1; char* numm6 = "Владимир"; float num7 = 42.0; http://www.cyberforum.ru/cpp-beginners/thread1198748.html
C++ Наследование классов, обратиться к замещающей функции
заголовочный файл #include <iostream> using namespace std; class X{ public: int x1,x2; X(int x_1, int x_2){ x1 = x_1;
Вывести на экран числа кратные 3 C++
Вывести на экран числа кратные 3. Числа вводим сами с экрана.
C++ Умножение всех элементов матрицы, равных 1, на заданное число (использовать while) http://www.cyberforum.ru/cpp-beginners/thread1198704.html
Помогите с решением задачи Составить программу которая производит умножение всех элементов двумерного массива равных 1 на заданное число. При формировании массива использовать оператор while
C++ Задача с бинарными файлами Реализовать программу, работающую с бинарным файлом f1, который содержит массив строк различной длины. Строка должна быть описана структурой с полями: • Длина строки • Массив символов Прим. : Такой формат имеет тип String в Pascal. Интерфейс должен позволять: • Вносить новые записи • Просматривать содержимое файла • Рассмотреть файл как последовательность битов. Если сумма всех битов,... подробнее

Показать сообщение отдельно
0x10
2425 / 1597 / 232
Регистрация: 24.11.2012
Сообщений: 3,919
04.06.2014, 18:48     STL и string
Либо я чего-то не понял, либо одно из двух...

Цитата Сообщение от Ilot Посмотреть сообщение
Тонкость в том, что в классе string (впрочем как и в vector) нет подходящей ф-и insert.
Как нет?
http://www.cplusplus.com/reference/s...string/insert/

Цитата Сообщение от Ilot Посмотреть сообщение
Думаю здесь лучше выполнять вставку копированием
Омг, зачем? Идти по строке и на ее основе строить новую где-то в третьем месте... Сложно. И получаются двойные затраты по памяти. Как отметил выше, есть insert, который решает задачу. Инвалидация итераторов? И черт с ними - не будем вообще их использоавть.

Цитата Сообщение от Ilot Посмотреть сообщение
У нас ведь есть списки. Посимвольная вставка для них имеет такую же сигнатуру, что и для других контейнеров, но выполняется за константное время.
Только аллокаций памяти на каждый символ нам не хватало.

От слов к коду:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <string>
 
int main() {
    std::string origin = "list string vector list map map list vector string list";
    const std::string search_str = "list";
    const std::string additional_str = "&&";
    
    size_t pos = 0;
    
    while ((pos = origin.find(search_str, pos)) != std::string::npos) {
        pos += search_str.size();
        origin.insert(pos, additional_str);
        pos += additional_str.size();
    }
    
    std::cout << origin << std::endl;
    
    return 0;
}
http://ideone.com/Atkrz3
 
Текущее время: 17:34. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru