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

Почему не запоминается правильно итератор вектора? - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Графическое оформление функции Y=A*EXP(X) http://www.cyberforum.ru/cpp-beginners/thread794779.html
Здравствуйте, сделал функцию с горем пополам Y=a*exp(x) вышла коряво но строит навроде правильно теперь остался вопрос с графическим оформлением как можно сделать его красивее. Просто с графическим...
C++ Расшифровка кода Извеняюсь если создал тему не там. У меня возникла проблема вот в чём: —в® § ¦Ёў®в*®Ґ Ё§®Ўа ¦Ґ*® * д®в®Ја дЁЁ? ( *Ј«.п§. 3 а § , в.Ґ. Ґб«Ё Ўл нв® Ўл« б®Ў Є , в® ®вўҐв Ўл« Ўл dogdogdog) Это... http://www.cyberforum.ru/cpp-beginners/thread794762.html
с free в delete C++
Как эту функцию можно переписать с помощью delete? void A(int **p,int r){ int **pr; for(pr = p; pr < pr + r; tr++) free(*pr); free(p); }
C++ Поиск простого отрицательного числа
Вот собственно, положительные простые она находит, а отрицательные - нет. for (i = 0; i < x; i++){ for (j = 0; j< x; j++){ for (z = 2; z< mas; z++) { if (mas % z == 0) ...
C++ WriteFile http://www.cyberforum.ru/cpp-beginners/thread794737.html
есть к примеру строка: string h = "2 3\r\n"; как можно переменную h использовать в WriteFile: Вот так работает: WriteFile(... , "2 3\r\n" , h.length()-1, ... ,NULL); А так WriteFile(......
C++ Сортировка массива. Задание №3 Доброго времени суток! У меня возникла некоторая проблема в написании кода для задания: Дан массив из 20 целых чисел со значениями от 1 до 20. Необходимо: - написать функцию, разбрасывающую... подробнее

Показать сообщение отдельно
MalinChyn
0 / 0 / 0
Регистрация: 25.02.2013
Сообщений: 7
27.02.2013, 08:52  [ТС]
Возник ещё один вопрос. Когда я попробовал запомнить в другом векторе (IndexOfSpaces) итераторы, то у меня не получилось, потому что, кажется, каждый раз выделялись адреса памяти, которые затирали предыдущие адреса-итераторы (закомментировано в коде).
В цикле for мне нужно было удвоить исходный пробел, хранящийся уже в векторе (vector_of_char). По причине затирания адресов-итератов, я вставлял пробел методом .insert () не на адрес итератора пробела, а на позицию следующего за пробелом итератора (it + 1). Но почему-то адрес всё равно затирается на третьем прохождении тела условия в цикле. И вопрос: почему, как этого избежать и всё-таки вставить пробелы в вектор?
(На сколько я понимаю, ссылки на адреса памяти, где в заданном векторе хранится какой-то конкретный элемент) пробела во время добавления в новых элементов в вектор.)
Пример входных данных:
0 1 2 3 4 5 6 7 8S

C++
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
#include <iostream>
#include <vector>
using namespace std;
 
int main ()
{
vector <char> vector_of_char;
vector <vector <char>::iterator> IndexOfSpaces;
vector <char>::iterator it;
char some_char;
 
while (cin.get (some_char) && some_char != 'S') {
vector_of_char.push_back (some_char);
//if (some_char == ' ') {
    //IndexOfSpaces.push_back (vector_of_char.end () - 1);
    //it = vector_of_char.end () - 1;
//}
}
 
 
for (it = vector_of_char.begin (); it != vector_of_char.end (); it++)
    if (*it == ' ') {
        vector_of_char.insert (it + 1, ' ');
        vector_of_char.resize(vector_of_char.size());
        it +=2;         // перепрыгнуть через только что созданный пробел
    }
 
 
 
return 0;
}
Добавлено через 11 часов 25 минут
Простите, строчка vector_of_char.resize (...) лишняя и осталась от предыдущей попытки понять, в чём дело
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru