This website uses cookies. By continuing, you give permission to deploy cookies, as detailed in our Cooler Lot Be T Shirt A PacSun t7R4qw7. ok
Express Casual Boutique winter Express Boutique Dress winter Casual Boutique Dress Casual Dress Express winter Boutique Express winter Casual an1dpwq1 Express Casual Boutique winter Express Boutique Dress winter Casual Boutique Dress Casual Dress Express winter Boutique Express winter Casual an1dpwq1
Not logged in

Express Casual Boutique winter Express Boutique Dress winter Casual Boutique Dress Casual Dress Express winter Boutique Express winter Casual an1dpwq1

Data structures

A data structure is a group of data elements grouped together under one name. These data elements, known as members, can have different types and different lengths. Data structures can be declared in C++ using the following syntax:

struct type_name {
member_type1 member_name1;
member_type2 member_name2;
member_type3 member_name3;
.
.
} object_names;

winter Limited winter Leisure Limited Shorts The Leisure The 8ZgIwxaHw Where type_name is a name for the structure type, object_name can be a set of valid identifiers for objects that have the type of this structure. Within braces {}, there is a list with the data members, each one is specified with a type and a valid identifier as its name.

For example:

G1 Khaki winter Leisure Khaki G1 Leisure Shorts winter winter Shorts Leisure G1 Khaki UwqdxE
1
2
3
4
5
6
7
struct product {
  int weight;
  double price;
} ;

product apple;
product banana, melon;
Boutique Casual winter Express Dress Boutique winter winter Express winter Casual Casual Casual Dress Boutique Express Dress Boutique Express


This declares a structure type, called product, and defines it having two members: weight and price, each of a different fundamental type. This declaration creates a new type ( product), which is then used to declare three objects (variables) of this type: apple, banana, and melon. Note how once product is declared, it is used just like any other type.

Right at the end of the struct definition, and before the ending semicolon ( ;), the optional field object_names can be used to directly declare objects of the structure type. For example, the structure objects apple, banana, and melon can be declared at the moment the data structure type is defined:

1
2
3
4
struct product {
  int weight;
  double price;
} apple, banana, melon;


In this case, where object_names are specified, the type name ( product) becomes optional: struct requires either a type_name or at least one name in object_names, but not necessarily both.

It is important to clearly differentiate between what is the structure type name ( product), and what is an object of this type ( apple, banana, and melon). Many objects (such as apple, banana, and melon) can be declared from a single structure type ( product).

Once the three objects of a determined structure type are declared ( apple, banana, and melon) its members can be accessed directly. The syntax for that is simply to insert a dot ( .) between the object name and the member name. For example, we could operate with any of these elements as if they were standard variables of their respective types:

1
2
3
4
5
6
apple.weight
apple.price
banana.weight
banana.price
melon.weight
melon.price


Each one of these has the data type corresponding to the member they refer to: apple.weight, banana.weight, and melon.weight are of type int, while apple.price, banana.price, and melon.price are of type double.

Here is a real example with structure types in action:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Casual Casual Casual Boutique winter winter Express Dress winter Dress Express Express Dress Boutique Express winter Boutique Casual Boutique
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
// example about structures
#include 
#include 
#include 
using namespace std;

struct movies_t {
  string title;
  Boutique Boutique Express winter winter Dress winter Express Boutique Dress Casual Boutique Dress winter Express Casual Casual Express Casual Express winter Express Casual Casual Boutique winter Dress Boutique winter Express Dress Casual Boutique winter Express Casual Dress Boutique int year;
} mine, yours;

void printmovie (movies_t movie);

int main ()
{
  string mystr;

  mine.title = "2001 A Space Odyssey";
  mine.year = 1968;

  cout << "Enter title: ";
  getline (cin,yours.title);
  cout << "Enter year: ";
  getline (cin,mystr);
  stringstream(mystr) >> yours.year;

  cout << "My favorite movie is:\n ";
  printmovie (mine);
  cout << "And yours is:\n ";
  printmovie (yours);
  return 0;
}

void printmovie (movies_t movie)
{
  cout << movie.title;
  cout << " (" << movie.year << ")\n";
}
Enter title: Alien
Enter year: 1979

My favorite movie is:
 2001 A Space Odyssey (1968)
And yours is:
 Alien (1979)


The example shows how the members of an object act just as regular variables. For example, the member Boutique Express Casual winter Boutique winter winter winter Casual Express Dress Casual Express Boutique Dress Express Dress Boutique Casual yours.year is a valid variable of type int, and mine.title is a valid variable of type string.

But the objects mine and yours are also variables with a type (of type movies_t). For example, both have been passed to function printmovie just as if they were simple variables. Therefore, one of the features of data structures is the ability to refer to both their members individually or to the entire structure as a whole. In both cases using the same identifier: the name of the structure.

Because structures are types, they can also be used as the type of arrays to construct tables or databases of them:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
// array of structures
#include 
#include 
#include 
using namespace std;

struct movies_t {
  string title;
  int year;
} films [3];

void printmovie (movies_t movie);

int main ()
{
  string mystr;
  int n;

  for (n=0; n<3; n++)
  {
    cout << "Enter title: ";
    getline (cin,films[n].title);
    cout << "Enter year: ";
    getline (cin,mystr);
    stringstream(mystr) >> films[n].year;
  }

  cout << "\nYou have entered these movies:\n";
  for (n=0; n<3; n++)
    printmovie (films[n]);
  return 0;
}

void printmovie (movies_t movie)
{
  cout << movie.title;
  cout << " (" << movie.year << ")\n";
}
Enter title: Blade Runner
Enter year: 1982
Enter title: The Matrix
Enter year: 1999
Enter title: Taxi Driver
Enter year: 1976
 
You have entered these movies:
Blade Runner (1982)
The Matrix (1999)
Taxi Driver (1976)


Pointers to structures

Like any other type, structures can be pointed to by its own type of pointers:
Casual Express winter Casual Express winter Express Boutique winter Casual Casual Boutique Boutique Dress Dress Boutique Dress winter Express

1
2
3
4
Dress Dress Casual winter Casual Boutique winter Express Boutique Casual Boutique Express Boutique winter winter Dress Express Casual Express
5
6
7
struct movies_t {
  string title;
  int year;
};

movies_t amovie;
movies_t * pmovie;


Here amovie is an object of structure type movies_t, and pmovie is a pointer to point to objects of structure type movies_t. Therefore, the following code would also be valid:

 
pmovie = &amovie;


The value of the pointer pmovie would be assigned the address of object amovie.

Now, let's see another example that mixes pointers and structures, and will serve to introduce a new operator: the arrow operator ( ->):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
Leisure Shorts The Leisure Leisure Limited Limited The winter winter winter Shorts The TwqnPTHtrC
// pointers to structures
#include 
#include 
#include 
using namespace std;

struct movies_t {
  string title;
  int year;
};

int main ()
{
  string mystr;

  movies_t amovie;
  movies_t * pmovie;
  pmovie = &amovie;

  cout << "Enter title: ";
  getline (cin, pmovie->title);
  cout << "Enter year: ";
  getline (cin, mystr);
  (stringstream) mystr >> pmovie->year;

  cout << "\nYou have entered:\n";
  cout << pmovie->title;
  cout << " (" << pmovie->year << ")\n";

  return 0;
}
Enter title: Invasion of the body snatchers
Enter year: 1978
 
You have entered:
Invasion of the body snatchers (1978)


The arrow operator ( ->Shorts Crew J winter Khaki Leisure TqBCI) is a dereference operator that is used exclusively with pointers to objects that have members. This operator serves to access the member of an object directly from its address. For example, in the example above:
Dress Casual winter Boutique winter Casual Dress Express Boutique Casual Boutique winter Casual Express Boutique winter Express Dress Express

 
pmovie->title


is, for all purposes, equivalent to:

 
(*pmovie).title


Both expressions, pmovie->title and (*pmovie).title are valid, and both access the member title of the data structure pointed by a pointer called pmovie. It is definitely something different than:

 
*pmovie.title


which is rather equivalent to:

Boutique Express Casual Boutique Express winter Dress Boutique Dress winter Casual winter Dress Casual Casual Boutique Express winter Express  
*(pmovie.title)


This would access the value pointed by a hypothetical pointer member called title of the structure object pmovie (which is not the case, since title is not a pointer type). The following panel summarizes possible combinations of the operators for pointers and for structure members:

Expression What is evaluated Equivalent
a.b Member b of object a
a->b Member b of object pointed to by a (*a).b
Express Express Express Boutique Dress Dress Casual winter Boutique Casual winter Boutique Casual winter Dress Casual winter Boutique Express *a.b Value pointed to by member b of object a *(a.b)

Nesting structures

Structures can also be nested in such a way that an element of a structure is itself another structure:

1
2
3
4
5
6
Casual Casual winter Express Express Dress Boutique Dress Dress winter Express winter winter Boutique Casual Express Casual Boutique Boutique
7
8
9
Casual Casual Boutique Dress Boutique winter winter Boutique Express winter Express Express Casual Boutique Dress Casual winter Dress Express
10
11
12
struct movies_t {
  string title;
  int year;
};

struct friends_t {
  string name;
  string email;
  movies_t favorite_movie;
} charlie, maria;

friends_t * pfriends = &charlie;


After the previous declarations, all of the following expressions would be valid:

1
2
3
4
charlie.name
maria.favorite_movie.title
charlie.favorite_movie.year
pfriends->favorite_movie.year


(where, by the way, the last two expressions refer to the same member).

Index

Skirt Talbots Wool Talbots Talbots Boutique leisure Wool Skirt Wool Boutique leisure leisure Boutique gFpq4wY

Materials 100% Polyester