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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Lord_Voodoo
Супер-модератор
8584 / 2184 / 61
Регистрация: 07.03.2007
Сообщений: 10,885
Завершенные тесты: 1
#1

использование stl - C++

25.09.2009, 10:53. Просмотров 686. Ответов 6
Метки нет (Все метки)

Тема для читателей книг и учебников...
Такой способ работы с векторами верен или нет (код рабочий) с точки зрения теории:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <string.h>
#include <utility>
#include <vector>
using namespace std;
typedef pair<char, int> symb; 
typedef vector<symb> asymb; 
int main()
{
 asymb s;
 for(int i = 0; i < 10; i++){
  s.insert(s.begin() + i, symb(48 + i, i)); 
 }
 for(int i = 0; i < 10; i++){
  cout << s[i].first << " " << s[i].second; 
 }
}
и можно ли как-то адресацию в insert делать без begin??? потому что s.insert(i, symb(48 + i, i)); много ругается... вообще есть в векторе какая-то функция или свойство для получения доступа к любой ячейке?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.09.2009, 10:53
Здравствуйте! Я подобрал для вас темы с ответами на вопрос использование stl (C++):

Использование алгоритмов STL - C++
Здравствуйте. Ребят пожалуйста решите 2 простенькие задачки, потратьте немного своего времени, очень прошу. Заранее огромное спасибо...

Использование класса list STL - C++
Здравствуйте, у меня есть базовый класс и унаследованный от него. Мне надо хранить в этом одном списке либо указатели на объекты базового...

Использование двух контейнеров из STL - C++
Нужно, чтобы: 1) Каждый объект имел свой уникальный ключ. 2) Быстрая выборка по ключу. 3) Быстрое прохождение по всем объектам. ...

Использование стандартных компонентов stl - C++
Помогите реализовать задачу с помощью stl Даны натуральное число n, действительные числа a1, ... , a2n . Вычислить (задание на снимке) я...

Использование STL в DLL-файлах - C++
Хочу использовать библиотеку STL в своем DLL-проекте. В частности для обеспечения функциональности требуется применение классов vector и...

Использование контейнера string из библиотеки STL - C++
Дан массив слов. Сформировать новое слово из символов слов массива, стоящих после последнего символа ‘*’ в слове. Сформировать предложение...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Sekt
156 / 155 / 10
Регистрация: 29.04.2009
Сообщений: 637
25.09.2009, 11:20 #2
Доступ vector исп при помощи функции at(),operator[]()-доступ без проверки.
at()-осуществляет проверку диапозона и возбуждат error out_of_range
C++
1
2
3
4
5
6
7
8
9
10
11
12
Example:
void function(vector<int>&v,int i1,int i2)
{
try
{
for(i=0;i<v.size();i++)
{
}
v.at(i1)=v.at(i2)// проверка диапозона при доступе
}catch(....){
}
}
Lord_Voodoo
Супер-модератор
8584 / 2184 / 61
Регистрация: 07.03.2007
Сообщений: 10,885
Завершенные тесты: 1
25.09.2009, 11:25  [ТС] #3
а мой код вставки корректен или нет, про at я знаю... но меня пока интересует этап формирования вектора...
Sekt
156 / 155 / 10
Регистрация: 29.04.2009
Сообщений: 637
25.09.2009, 11:35 #4
C++
1
2
typedef pair<char, int> symb; 
s.insert(s.begin() + i, symb(48 + i, i)); // 48+1 ето специальная кодировка может какая для char?
и
C++
1
2
3
4
    for(int i = 0; i < 10; i++)
    {
        s.insert(s.begin(), symb(48 + i, i+i)); 
    }
я бы делал так.
Не знаю почему s.begin+i не хочет
Lord_Voodoo
Супер-модератор
8584 / 2184 / 61
Регистрация: 07.03.2007
Сообщений: 10,885
Завершенные тесты: 1
25.09.2009, 11:49  [ТС] #5
Sekt, 48+1 - это цифры (48 - "0")...

у те,я не работает begin() + i?
ISergey
Maniac
Эксперт С++
1373 / 884 / 52
Регистрация: 02.01.2009
Сообщений: 2,653
Записей в блоге: 1
25.09.2009, 12:33 #6
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <utility>
#include <vector>
 
typedef std::pair<char, int> symb; 
typedef std::vector<symb> asymb; 
 
int main()
{
    asymb s;
    for(int i = 0; i < 10; i++){
        s.push_back(std::make_pair(48 + i, i)); 
    }
 
    asymb::iterator i = s.begin();
    for(; i != s.end(); ++i){
        std::cout << (*i).first << " " << (*i).second; 
    }
}
Lord_Voodoo
Супер-модератор
8584 / 2184 / 61
Регистрация: 07.03.2007
Сообщений: 10,885
Завершенные тесты: 1
25.09.2009, 13:04  [ТС] #7
Цитата Сообщение от ISergey Посмотреть сообщение
asymb::iterator i = s.begin();

ISergey
, вот за это спасибо... никак не мог понять, какого типа эта беда...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.09.2009, 13:04
Привет! Вот еще темы с ответами:

Использование указателей на контейнеры STL в заголовочных файлах - C++
Для использования указателей на I/O классы достаточно включить &lt;iosfwd&gt; который содержит опережающие объявления и таким образом появляется...

Использование list stl для вывода в файл - C++
Начинаю изучать STL. Есть задача, что нужно составить &lt;list&gt;ы из экземпляров моего класса и вывести все это в отдельный файл. Как это...

Не могу освоить использование контейнеров STL (решить задачу) - C++
Последняя (надеюсь) лаба по СТЛ... Котегорически в них ничего не понимаю Буду очень блогодарен за решение этой задачки с как можно...

Использование библиотеки STL , контейнер string. Дан массив слов.Надо удалить все цифры из слов - C++
#include &quot;StdAfx.h&quot; #include &lt;string&gt; #include &lt;iostream&gt; #include &lt;algorithm&gt; using namespace std; int main() { string str...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
25.09.2009, 13:04
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru