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

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

Войти
Регистрация
Восстановить пароль
 
Santer.Net
15 / 15 / 1
Регистрация: 18.11.2010
Сообщений: 122
#1

как элегантно писать код STL - C++

24.03.2011, 23:39. Просмотров 641. Ответов 6
Метки нет (Все метки)

Здравствуйте. Подскажите как правильнои оптимально
записать следущие частички кода с использованием СТЛ
Скажем,в качестве массив используем вектор vec в качестве обычного a

1)Считать элементи с потока
C++
1
2
3
4
5
6
7
8
9
for(int i=0;i<N;i++)
cin>>a[i];
Как записать правильней с помощью СТЛ
int inp;
for(int i=0;i<N;i++)
{
cin>>inp;
vec.pusg_back(inp);
}
2)Присвоить элемент
C++
1
2
3
4
5
6
int* a;
*(a+3)=1;
*(a+0)=434343;
*(a+1)=4343;
 
На Си такая запись прокатит в незаполненом массиве,как правильно записать с помощью СТЛ
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.03.2011, 23:39
Я подобрал для вас темы с готовыми решениями и ответами на вопрос как элегантно писать код STL (C++):

Как писать код по стандарту - C++
Извините, что создал тему скорей всего в неподходящей ветке. Но все же. Где-то читал (к сожалению не помню где) как нужно писать код по...

Как грамотней писать код? - C++
Добрый день. 1. Как правильней перебирать контейнер (карта, хеш, список...) - обычным for(int = 0;...) или с использованием итераторов? ...

Как не писать один и тот же код, для функции, принимающей разные типы данных в качестве аргумента - C++
Проблема такая: есть некая функция. Внутри нее происходят одни и теже вычисления, вне зависимости от типа входных данных. void...

Переписать готовую функцию более элегантно - C++
Мое понимание элегантной функции: записано наиболее коротко, понятно, ничего лишнего, работает наиболее оптимальным образом не в ущерб...

Начать писать код на c++ - C++
Друзья, день добрый. Я так понимаю что на чистом с++ мало людей нынче пишут и это ( в какой-то степени ) не актуально? все пишут на...

Где можно найти код реализации библиотеки STL - C++
Вот хочу я, например, проверить, функция std::swap() делает ли проверку на попытку обмена объекта с самим собой. Как/где я могу...

6
asics
Freelance
Эксперт С++
2854 / 1789 / 144
Регистрация: 09.09.2010
Сообщений: 3,841
24.03.2011, 23:44 #2
Модно как-то так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
#include <vector>
#include <algorithm>
 
int main(){
  std::vector<int> vec;
  const size_t N = 5;
  vec.resize(N);
  struct Func{
    int operator() (){
      int temp;
      std::cin >> temp;
      return temp;
    }
    void operator() (int a){
      std::cout << a << ' ';
    }
  };
  std::generate_n(vec.begin(), N, Func());
  std::for_each(vec.begin(), vec.end(), Func());
  return 0;
}
0
ISergey
Maniac
Эксперт С++
1407 / 918 / 57
Регистрация: 02.01.2009
Сообщений: 2,736
Записей в блоге: 1
24.03.2011, 23:56 #3
или..
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <vector>
#include <iostream>
#include <algorithm>
 
 
int main(){
    std::vector<int> d;
 
    std::cout << "Enter a sequence of integers (eof to quit): " ;
    std::copy(std::istream_iterator<int>(std::cin),
          std::istream_iterator<int>(), std::inserter(d,d.begin()));
 
    std::copy(d.begin(),d.end(),std::ostream_iterator<int>(std::cout,"\n"));
 
    return 0;
}
0
alex_x_x
бжни
2454 / 1659 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
25.03.2011, 00:13 #4
C++
1
2
3
4
   std::vector<int> some_list(10);
   std::for_each(some_list.begin(), some_list.end(), [](int &x) {
     std::cin >> x;
   });
0
Mr.X
Эксперт С++
3060 / 1705 / 265
Регистрация: 03.05.2010
Сообщений: 3,867
25.03.2011, 06:53 #5
2)
C++
1
2
3
4
5
6
7
std::vector<int>  v;
size_t  pos = 0;
if(pos >= v.size())//Если вы уверены в ложности этого условия, то проверку можно не делать.
{
    v.resize((pos + 1) * 2);
}
v[pos] = 5;
0
ForEveR
В астрале
Эксперт С++
7992 / 4751 / 321
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
25.03.2011, 17:16 #6
1.
C++
1
std::vector<int> vec((std::istream_iterator<int>(std::cin)), std::istream_iterator<int>());
0
Evg
Эксперт CАвтор FAQ
18897 / 6854 / 500
Регистрация: 30.03.2009
Сообщений: 19,288
Записей в блоге: 30
25.03.2011, 17:48 #7
Я не большой специалист по Си++, но не понимаю, почему такие сложные наовроты на простые вопросты:

1. Вместо "Как записать правильней с помощью СТЛ" должен быть подставлен код
C++
1
2
std::vector<int> vec;
vec.resize (10);
2. На Си такая запись прокатит в незаполненом массиве,как правильно записать с помощью СТЛ.

В твоём тесту у тебя указатель a не инициализирован. Если подразумевается, что у тебя всё-таки нормально проинициализированный вектор, то

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
// используем ссылку вместо указателя, чтобы не было возможности использовать
// неинициализировнную память. В правой части присваивания подразумеваем
// некий объект-vector, который ещё незаполнен (т.е. в нём 0 элементов)
std::vector<int> &a = ....;
 
// В исходном примере максимальный индекс - это 3, а потому нам надо выделить
// как минимум 4 элемента в массиве
a.resize (4);
 
// Заполняем элементы
a[3] = 1;
a[0] = 434343;
a[1] = 4343;
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.03.2011, 17:48
Привет! Вот еще темы с ответами:

Поясните за код (листинг из Мюссера : Справочное руководство по STL) - C++
Добрый день. Вот код : // Demonstrating STL vector constructors with a user-defined // type and showing copying explicitly ...

Код класса большие числа из книги Л.Аммерааля Stl для программистов - C++
Здравствуйте, не у кого нет кода класса большое число из книги Л.Аммерааля Stl для программистов Заранее спасибо!

Как лучше учиться: писать консольные приложения или оконные? И если писать оконные, то на чём лучше? - C++
На днях я узнал про Borland c++ builder и хочу воспользоваться им, но можно и писать код, что-бы было оконное приложение, так что-же лучше?...

Зная c++ в чем можно писать код кроме проекта Win32 в студии? - C++
Прошу правильно понять:например в фильмах различные хакеры взламывают что-то и т.п и вообще если что-то супер написано на с++ то это...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

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