Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Массив Использовать так ? 
:(
    Опции темы
denes
  Дата 28.4.2018, 00:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 134
Регистрация: 7.4.2010

Репутация: нет
Всего: -7



#include <iostream>
#include <vector>
using namespace std;
int main()
{
    vector<int> array1(3);
    // инициализируем элементы вектора array1
    array1[0] = 4;
    array1[1] = 2;
    array1[2] = 1;
    vector<int> array2(3);
    // инициализируем элементы вектора array2
    array2[0] = 4;
    array2[1] = 2;
    array2[2] = 1;
    // сравниваем массивы
    if (array1 == array2) {
        cout << "array1 == array2" << endl;
    }
    return 0;
}
Так ?

Массивы содержат определенное количество элементов определенного типа. Чтобы компилятор мог зарезервировать требуемое пространство при компиляции программы, вы должны указать тип и количество элементов, которые будет содержать массив, когда он будет определен. Компилятор должен иметь возможность определить это значение при компиляции программы. Как только массив определен, вы используете идентификатор для массива вместе с индексом для доступа к определенным элементам массива. [...] массивы нуль-индексируются; то есть первый элемент находится в индексе 0. Эта схема индексирования указывает на тесную связь в С++ между указателями и массивами и правилами, которые язык определяет для арифметики указателя.

- Справочник по С++ Pocket Это знаю
--------------------
Денис
PM MAIL   Вверх
xvr
Дата 28.4.2018, 13:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 35
Всего: 223



Цитата(denes @  28.4.2018,  00:53 Найти цитируемый пост)
Так ?

Ну так. Или так (c++11):
Код

#include <iostream>
#include <vector>
using namespace std;
int main()
{
    vector<int> array1 = {4,2,1};
    vector<int> array2 = {4,2,1};
    // сравниваем массивы
    if (array1 == array2) {
        cout << "array1 == array2" << endl;
    }
    return 0;
}

Цитата(denes @  28.4.2018,  00:53 Найти цитируемый пост)
Массивы содержат определенное количество элементов определенного типа.

Не путайте встроенный в язык массив с шаблонным классом std::vector


PM MAIL   Вверх
_zorn_
Дата 28.4.2018, 15:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1077
Регистрация: 21.8.2007

Репутация: нет
Всего: 12



То что вы подразумеваете по массивом (квадратные скобки, верно ?), в C++ имеют разное значение. Они могут быть переопределены и т.п.
В чистом си следующие выражения эквивалентны. Если не знаете что такое указатели, самое время познакомится  smile 
Код

char *arr;
//и
char arr[];
...
arr[4]
//и
*(arr + 4)
//Идем дальше
int arr[];
...
*(arr + 1) //Или arr[1]. Возьмет 4 байта (с условием что int 4 байта конечно) по смещению *(char)arr+4



Это сообщение отредактировал(а) _zorn_ - 28.4.2018, 15:45
PM MAIL   Вверх
denes
  Дата 1.5.2018, 01:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 134
Регистрация: 7.4.2010

Репутация: нет
Всего: -7



классом std::vector Этого не понял можите обьяснить ?

Добавлено через 2 минуты и 52 секунды
Цитата(_zorn_ @ 28.4.2018,  15:42)
То что вы подразумеваете по массивом (квадратные скобки, верно ?), в C++ имеют разное значение. Они могут быть переопределены и т.п.
В чистом си следующие выражения эквивалентны. Если не знаете что такое указатели, самое время познакомится  smile 
Код

char *arr;
//и
char arr[];
...
arr[4]
//и
*(arr + 4)
//Идем дальше
int arr[];
...
*(arr + 1) //Или arr[1]. Возьмет 4 байта (с условием что int 4 байта конечно) по смещению *(char)arr+4

Так это не правильный код ?
Напишите где не точность ?
И в чем разница ?
--------------------
Денис
PM MAIL   Вверх
_zorn_
Дата 28.5.2018, 15:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1077
Регистрация: 21.8.2007

Репутация: нет
Всего: 12



Ну std::vector должны быть какие то методы использования (типа push быть). Я не С++ программер. Стандартные вещи (для плюсов) могу не знать  smile 
PM MAIL   Вверх
denes
Дата 2.6.2018, 12:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 134
Регистрация: 7.4.2010

Репутация: нет
Всего: -7



Цитата(_zorn_ @ 28.5.2018,  15:54)
Ну std::vector должны быть какие то методы использования (типа push быть). Я не С++ программер. Стандартные вещи (для плюсов) могу не знать  smile

Интиресно какие ?
--------------------
Денис
PM MAIL   Вверх
_zorn_
Дата 7.6.2018, 18:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1077
Регистрация: 21.8.2007

Репутация: нет
Всего: 12



Это СВИНСТВНО заставлять человека искать за вас.

Поисковой запрос:
https://yandex.ru/search/?text=std%3A%3Avec...sh&lr=11406

Первая ссылка:
http://www.cplusplus.com/reference/vector/vector/push_back/

ЗЫ: Так же хз почему push_back  smile 

Это сообщение отредактировал(а) _zorn_ - 7.6.2018, 18:06
PM MAIL   Вверх
TheCalligrapher
Дата 9.6.2018, 04:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 9.6.2018

Репутация: нет
Всего: нет



Цитата(_zorn_ @ 28.4.2018,  15:42)
То что вы подразумеваете по массивом (квадратные скобки, верно ?), в C++ имеют разное значение. Они могут быть переопределены и т.п.
В чистом си следующие выражения эквивалентны. Если не знаете что такое указатели, самое время познакомится  smile 
Код

char *arr;
//и
char arr[];
...

Что имеется в в иду под "эквивалентностью выражений"

Код

char *arr;
//и
char arr[];


в "чистом си" - не ясно. Во-первых, это не "выражения", а объявления. Во-вторых, в общем случае они не эквивалентны. Единственный контекст в С, в котором эти объявления эквивалентны - это объявления параметров функции, да и то эквивалентность не полная.

PM MAIL   Вверх
denes
Дата 11.6.2018, 12:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 134
Регистрация: 7.4.2010

Репутация: нет
Всего: -7



Цитата(_zorn_ @ 7.6.2018,  18:04)
Это СВИНСТВНО заставлять человека искать за вас.

Поисковой запрос:
https://yandex.ru/search/?text=std%3A%3Avec...sh&lr=11406

Первая ссылка:
http://www.cplusplus.com/reference/vector/vector/push_back/

ЗЫ: Так же хз почему push_back  smile

Стандартный шаблон обобщённого программирования языка Си++ std::vector<T> — реализация динамического массива переменного размера.

это ?

Добавлено через 1 минуту и 26 секунд
Цитата(TheCalligrapher @ 9.6.2018,  04:32)
Цитата(_zorn_ @ 28.4.2018,  15:42)
То что вы подразумеваете по массивом (квадратные скобки, верно ?), в C++ имеют разное значение. Они могут быть переопределены и т.п.
В чистом си следующие выражения эквивалентны. Если не знаете что такое указатели, самое время познакомится  smile 
Код

char *arr;
//и
char arr[];
...

Что имеется в в иду под "эквивалентностью выражений"

Код

char *arr;
//и
char arr[];


в "чистом си" - не ясно. Во-первых, это не "выражения", а объявления. Во-вторых, в общем случае они не эквивалентны. Единственный контекст в С, в котором эти объявления эквивалентны - это объявления параметров функции, да и то эквивалентность не полная.

В С круглые скобки предназначены для изменения приоритета выполнения операторов.

 Квадратные скобки предназначены для индексации массивов . Короче говоря, если имеется массив, то с помощью квадратных скобок можно обратиться к элементу массива. Например, в программе

 #include <stdio.h>

 char s[80];

 int main(void)
 {
 s[3] = 'X';
 printf("%c", s [3]);
 return 0;
 }
--------------------
Денис
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.1308 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.