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

Vector - out of range или выход за пределы - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Программу Pascal переписать под c++ http://www.cyberforum.ru/cpp-beginners/thread630582.html
Всем доброго времени суток много увожаемые пользователи форума. Прошу помощи у вас, по скольку очень плохо владею языком c++ program lolz; Var A,b,c,d,e,f,g: real; Begin Write("vvedite a"); Readln (a); B:=a*a;
C++ Деление кода на .h .cpp Подскажите пожалуйста как правильно поделить код! Обязательно чтобы были заголовочные файлы и файлы .cpp main.cpp # include <iostream> using namespace std; # include <conio.h> # include "queue.h" int main(void) { http://www.cyberforum.ru/cpp-beginners/thread630543.html
C++ Дополнение char строк пробелами при записи их в файл
Пытаюсь написать простенькую прогу, создающую базу данных имен и номеров сотрудников в файле. Столкнулся со следующей проблемой: при записи строк, имеющих длину меньше длины массива, в файл они дополняются мусором - примерно так: Ivan ММММММММММIvanov ММММММММ12345 МММММММММ. При попытке их последующего получения из файла и записи в переменные они также имеют мусорные символы. Собственно...
Радио плеер C++
Решил написать кросс платформенный радио плеер (потоковый Icecast2). Куда копать? И с чего лучше начать?
C++ Выделение и освобождение памяти в c++ http://www.cyberforum.ru/cpp-beginners/thread630530.html
Не давно наткнулся на такую замечательность : system("PAUSE");//1 раз int *p = new int; // память system("PAUSE");//2 раз delete p;// нет память Запускаю программу,смотрю скока мемори она хавает 226(примерно)
C++ Ошибка в подсчете количества инверсий Здравствуйте, помогите разобраться с подсчетом количества инверсий, в случае повторяющихся элементов. Количество элементов в массиве 65537, максимальное значение 10^9, элементы не отрицательные, время 0.5 с. Гуглил, нагуглил три алгоритма (http://cppalgo.blogspot.com/2011/02/blog-post_07.html), но там случай различных элементов. Написал первый алгоритм #include <iostream> #include... подробнее

Показать сообщение отдельно
novi4ok
551 / 504 / 8
Регистрация: 23.07.2009
Сообщений: 2,359
Записей в блоге: 1
31.07.2012, 15:01     Vector - out of range или выход за пределы
Цитата Сообщение от ~OhMyGodSoLong~ Посмотреть сообщение
Эм...
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <vector>
#include <iostream>
 
using namespace std;
 
int main()
{
    vector<int> arr;
    arr.push_back(1);
    arr.push_back(-1);
 
    for (vector<int>::iterator i = arr.begin(); i != arr.end(); i += 2) {
        i = arr.insert(i, *i);
    }
 
    for (vector<int>::iterator i = arr.begin(); i != arr.end(); i++) {
        cout << *i << endl;
    }
 
    return 0;
}
это был неправильный ответ. внутри такого цикла нельзя изменять вектор, иначе итератор становится "запорченным". лучше так:
C++
1
2
3
4
5
6
7
8
std::vector<int>v;
v.push_back(0);
v.push_back(1);
v.push_back(2);
int size = v.size();
for (int i = size-1; i >=0; i--){
   v.insert (v.begin()+i, v.begin()+i);
}
проверь, может где какую мелочь подкрутить нужно, но думаю должно сработать.
это - на случай, если вектор небольшой, или производительность высокая не требуется. если случай другой, то лучше второй вектор создать, сразу зарезервировав память на двойную длину исходного вектора, проитерировать первый вектор, допивывая каждый его элемент в выходной элемент дважды. затем присвоить то, что получилось, первому. будет значительно (!) быстрее.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru