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

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

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

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

25.09.2009, 10:53. Просмотров 675. Ответов 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
Посмотрите здесь:

STL C++
C++ STL в С++
STL C++
C++ STL
Использование алгоритмов STL C++
C++ Использование STL в DLL-файлах
C++ Использование двух контейнеров из STL
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Sekt
156 / 155 / 10
Регистрация: 29.04.2009
Сообщений: 637
25.09.2009, 11:20     использование stl #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
Супер-модератор
8577 / 2177 / 61
Регистрация: 07.03.2007
Сообщений: 10,863
Завершенные тесты: 1
25.09.2009, 11:25  [ТС]     использование stl #3
а мой код вставки корректен или нет, про at я знаю... но меня пока интересует этап формирования вектора...
Sekt
156 / 155 / 10
Регистрация: 29.04.2009
Сообщений: 637
25.09.2009, 11:35     использование stl #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
Супер-модератор
8577 / 2177 / 61
Регистрация: 07.03.2007
Сообщений: 10,863
Завершенные тесты: 1
25.09.2009, 11:49  [ТС]     использование stl #5
Sekt, 48+1 - это цифры (48 - "0")...

у те,я не работает begin() + i?
ISergey
Maniac
Эксперт С++
1347 / 880 / 52
Регистрация: 02.01.2009
Сообщений: 2,645
Записей в блоге: 1
25.09.2009, 12:33     использование stl #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; 
    }
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.09.2009, 13:04     использование stl
Еще ссылки по теме:

C++ Не могу освоить использование контейнеров STL (решить задачу)
C++ Использование библиотеки STL , контейнер string. Дан массив слов.Надо удалить все цифры из слов
Использование стандартных компонентов stl C++
C++ Использование list stl для вывода в файл
Использование класса list STL C++

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

Или воспользуйтесь поиском по форуму:
Lord_Voodoo
Супер-модератор
8577 / 2177 / 61
Регистрация: 07.03.2007
Сообщений: 10,863
Завершенные тесты: 1
25.09.2009, 13:04  [ТС]     использование stl #7
Цитата Сообщение от ISergey Посмотреть сообщение
asymb::iterator i = s.begin();

ISergey
, вот за это спасибо... никак не мог понять, какого типа эта беда...
Yandex
Объявления
25.09.2009, 13:04     использование stl
Ответ Создать тему
Опции темы

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