Sponsored Content
Full Discussion: Arrays in C++
Top Forums Programming Arrays in C++ Post 302584573 by John Tate on Friday 23rd of December 2011 05:03:25 PM
Old 12-23-2011
Arrays in C++

I've noticed something interesting in C++ programming. I've always done tricky stuff with pointers and references to have functions deal with arrays. Doing exercises again out of a C++ book has shown me an easier way, I didn't even know was there. It's weird to me.

When dealing with arrays, it seems if I pass an array to a function although I cannot return an array - if the array is changed it changes for the whole program. The array is seemingly global. Hence this code works (GCC 4.7)...

Code:
#include <iostream>

using namespace std;

int read_inputs(double inputs[], int capacity) {
    int current_size = 0;
    cout << "Please enter values, Q to quit:"<<endl;
    bool more = true;
    while (more)
    {
        double input;
        cin >> input;
        if (cin.fail()) {
            more = false;
        } else if (current_size < capacity) {
            inputs[current_size] = input;
            current_size++;
        }
    }
    return current_size;
}

void multiply(double values[], int size, double factor)
{
    for (int i = 0; i < size; i++)
    {
        values[i]=values[i] * factor;
    }
}

void print(double values[], int size)
{
    for (int i = 0; i < size; i++)
    {
        if (i > 0) {cout << ", ";}
        cout << values[i];
    }
    cout << endl;
}

int main() {
    const int CAPACITY = 1000;
    double values[CAPACITY];
    int size = read_inputs(values, CAPACITY);
    print(values, size);
    multiply(values, size, 2);
    print(values, size);

    return 0;
}

 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Arrays

Dear all, How can i unset arrays. I mean all the subscripts including the array after using them. Could you direct me to some links of array memory handling in the korn shell. Thanks (2 Replies)
Discussion started by: earlysame55
2 Replies

2. Web Development

PHP arrays in arrays

PHP question... I have an SQL query that's pulled back user IDs as a set of columns. Rather than IDs, I want to use their names. So I have an array of columns $col with values 1,7,3,12 etc and I've got an array $person with values "Fred", "Bert", "Tom" etc So what I want to do is display the... (3 Replies)
Discussion started by: JerryHone
3 Replies

3. UNIX for Dummies Questions & Answers

arrays how to?

Hello, I am some what of a newbie to awk scripting and I seem to be struggling with this problem. I know I need to use arrays but I can't figure out how to use them. I have an input file that looks like this; Name,Team,First Test, Second Test, Third Test Crystal,Red,5,17,22... (1 Reply)
Discussion started by: vlopez
1 Replies

4. HP-UX

Hitachi arrays to HP-UX 11.11

We have 2 servers (L1000 and rp7410) running 11.11. We would like to hook them up to either a Hitatchi AMS 2500 or Hitachi USPV via fiber channel. I need to what drivers I need for this and if it will work. Oh, they are using HP Tachyon XL2 Fiber Channel Mass Storage Adapters. Thanks, Bill (1 Reply)
Discussion started by: wsmcelroy
1 Replies

5. Shell Programming and Scripting

2d arrays in unix

hi everybody can anyone help me with usage of 2 dimensional arrays in unix. please provide a suitable example for accessing individual elements as well as all elements. Thanks (2 Replies)
Discussion started by: jpriyank
2 Replies

6. Shell Programming and Scripting

Using arrays in shell

I have three arrays. One is Master array and that has list of other array in config file. for e.g (for simplicity I have only defined array with 2 elements each) set +A MASTERARRAY SQLUPDATE_ONETIME SQLUPDATE_DAILY END_OF_ARRAY set +A SQLUPDATE_ONETIME update12 update22 END_OF_ARRAY... (4 Replies)
Discussion started by: anish
4 Replies

7. Programming

question about int arrays and file pointer arrays

if i declare both but don't input any variables what values will the int array and file pointer array have on default, and if i want to reset any of the elements of both arrays to default, should i just set it to 0 or NULL or what? (1 Reply)
Discussion started by: omega666
1 Replies

8. Shell Programming and Scripting

How can I use the arrays ?

Hi all, I have a file test1.txt with the below contents abc def ghj xyz I tried printing these values using arrays. Script tried : =========== set -A array1 `cat test1.txt` count=${#array1 } i=0 while do echo "element of array $array1" done (1 Reply)
Discussion started by: dnam9917
1 Replies

9. Shell Programming and Scripting

Using arrays?

I have never used arrays before but I have a script like this: var1=$(for i in $(cat /tmp/jobs.021013);do $LIST -job $i -all | perl -ne 'print /.*(\bInfo.bptm\(pid=\d{3,5}).*/' | tr -d "(Info=regpid" | tr -d ')'; $LIST -job $i -all | cut -f7 -d','| sed -e "s/^\(*\)\(*\)\(*\)\(.*\)/\1... (2 Replies)
Discussion started by: newbie2010
2 Replies

10. UNIX for Dummies Questions & Answers

Arrays

Am using bash For eg: Suppose i have a array arr=(1 2 3 4 5 6 7 8 9 10 11 12) suppose i give input 5 to a script and script should able to print values greater than or equal to 5 like below: Input: 5 output: 5,6,7,8,9,10,11,12 (7 Replies)
Discussion started by: manid
7 Replies
FBB::Ranger(3bobcat)						   Error handler					      FBB::Ranger(3bobcat)

NAME
FBB::Ranger - generalizes ranges for range-based for-loops SYNOPSIS
#include <bobcat/ranger> DESCRIPTION
The Ranger class template defines ranges that can be used with range-based for-loops. The standard range-based for-loop requires for its range-specificiation an array or an iterator range as offered by, e.g., containers (through their begin and end members. Ranges defined by a pair of pointers or by a subrange defined by iterator expressions cannot currently be used in combination with range-based for-loops. Ranger extends the applicability of range-based for-loops by turning pairs of pointers, an initial pointer and a pointer count, or a pair of iterators into a range that can be used by range-based for-loops. Ranger is a class template requiring one template type parameter: Iterator, an iterator or pointer type reaching the data when derefer- enced. Ranger's users don't have to specify Ranger's template type. The function template ranger returns the appropriate Ranger object. NAMESPACE
FBB All constructors, members, operators and manipulators, mentioned in this man-page, are defined in the namespace FBB. FREE FUNCTION
When using the following free functions, any (subrange) of iterators or pointers can be used. With iterators subranges of reverse iterators can also be specified. The EXAMPLE section below illustrates the use of the ranger function templates. o Ranger<Iterator> ranger(Iterator &&begin, Iterator &&end): this function template returns a Ranger object for the (sub)range defined by two (reverse) iterators; o Ranger<Iterator> ranger(Iterator &&begin, size_t count): this function template returns a Ranger object for the (sub)range defined by the (reverse) iterator range begin and begin + count; o Ranger<Data *> ranger(Data *begin, Data *end): this function template returns a Ranger object for the (sub)range defined by the two pointers begin and end; o Ranger<Data *> ranger(Data *begin, size_t count): this function template returns a Ranger object for the (sub)range defined by the two pointers begin and begin + count. CONSTRUCTORS
Below, Iterator refers to the Ranger class template's type parameter. Although named 'Iterator' it can also be a pointer to some data type (e.g., std::string *). o Ranger(Iterator const &begin, Iterator const &end): A Ranger object can be passed as range-specifier in a range-based for-loop. All elements defined by the range will subsequently be visited by the range-based for-loop. The copy and move constructors are available. OVERLOADED OPERATORS
The copy and move assignment operators are available. MEMBER FUNCTIONS
o Iterator const &begin() const: returns (a copy of) the begin iterator passed to the Ranger's constructor. Note that if Iterator was a pointer type (like int *) the data to which the iterator returned by begin() can actually be modified, as the member's return type (using int * for Iterator) becomes int * const &, so a reference to a constant pointer to an int. This is perfectly OK: if the data themselves should be immutable, then the data type must be defined as int const, which is automatically the case when passing int const * data. See the EXAMPLE section for an illustration. o Iterator const &end() const: returns (a copy of) the end iterator passed to the Ranger's constructor. If reverse iterators are passed to Ranger's constructor, then the begin and end members return reverse iterators. Since the intended use of Ranger objects is to define a range for range-base for-loops, members like rbegin and rend can be omitted from Ranger. EXAMPLE
#include <vector> #include <iostream> #include <bobcat/ranger> using namespace std; using namespace FBB; int main() { vector<int> iv {1, 2, 3, 4, 5}; // display and modify a subrange for(auto &el: ranger(iv.rbegin() + 1, iv.rend() - 1)) cout << el++ << ' '; cout << ' '; // display a reversed range for(auto &el: ranger(iv.rbegin() + 1, iv.rend() - 1)) cout << el << ' '; cout << ' '; // same: display using a count for(auto &el: ranger(iv.rbegin() + 1, 3)) cout << el << ' '; cout << ' '; int intArray[] = {1, 2, 3, 4, 5}; // display and modify elements // in a pointer-based range for(auto &el: ranger(intArray + 1, intArray + 3)) cout << el++ << ' '; cout << ' '; // data now modified for(auto &el: ranger(intArray + 1, intArray + 3)) cout << el << ' '; cout << ' '; // using a count rather than an // end-pointer for(auto &el: ranger(intArray + 1, 3)) cout << el << ' '; cout << ' '; int const constInts[] = {1, 2, 3, 4, 5}; // data can't be modified for(auto &el: ranger(constInts + 1, constInts + 3)) cout << el << ' '; cout << ' '; } FILES
bobcat/ranger - defines the class interface SEE ALSO
bobcat(7) BUGS
None Reported. DISTRIBUTION FILES
o bobcat_3.01.00-x.dsc: detached signature; o bobcat_3.01.00-x.tar.gz: source archive; o bobcat_3.01.00-x_i386.changes: change log; o libbobcat1_3.01.00-x_*.deb: debian package holding the libraries; o libbobcat1-dev_3.01.00-x_*.deb: debian package holding the libraries, headers and manual pages; o http://sourceforge.net/projects/bobcat: public archive location; BOBCAT
Bobcat is an acronym of `Brokken's Own Base Classes And Templates'. COPYRIGHT
This is free software, distributed under the terms of the GNU General Public License (GPL). AUTHOR
Frank B. Brokken (f.b.brokken@rug.nl). libbobcat1-dev_3.01.00-x.tar.gz 2005-2012 FBB::Ranger(3bobcat)
All times are GMT -4. The time now is 05:40 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy