C++ :: Should Use Vector Or Just Double Array
Dec 15, 2014
I am programming about some numerical problems. I know that vector supplies vector operations. But vector always allocate more memory (used when the size changes). My matrix or array never change size, and the vector operation is just +,-,dot,cross,distance
My question is that should I use vector, or simple double array with new & delete is enough for me?
View 6 Replies
ADVERTISEMENT
Mar 27, 2013
Whenever the code reaches:
matrix[atoi(tmp[1].c_str())][atoi(tmp[2].c_str())] = strtod(tmp[3].c_str(), NULL);
The app just blocks. Could it be due to a lack of RAM (since its inside a massive loop and I'm currently using an old-ass pc with 1GB RAM) or is it bad programming? If I remove that line everything runs smoothly.
View 7 Replies
View Related
Feb 9, 2015
How to output vector contents using the push_back function. My program reads in values just fine, but it does not output anything and I've been stuck on why.
here is my code:
#include <iostream>
#include <array>
#include <vector>
using namespace std;
int duplicate( vector < int > &vector1, const int value, const int counter)
[Code].....
View 3 Replies
View Related
Dec 20, 2014
The assignment is to create a program that lets users reserve a spot on a plane either in coach or first class. I'm supposed to create a .txt file to use as the prices for different seats and while I have done that, I'm having trouble getting the file into a double array.
This is what I have so far.
//This program lets the user reserve airline tickets on a plane
#include <iostream>
#include <cstring>
#include <fstream>
using namespace std;
[Code]....
Once I have the file into a double array, I have to use that array to implement it into the seat prices. Such as if user chooses to sit in row 1 seat 1 it would be that price. Also the '#' means open seat and '*' means seat taken. O yea, under the "//Populating the double array" is me trying to see if a for statement or a nested for statement would work.
View 5 Replies
View Related
Mar 6, 2015
How to convert char array into double?,i.e. store char array values into a single double variable. Below is the code that i'm working. Im extracting the value "2255.1682" from char array gpsdata1. I used while loop, extracted the value and stored in "myChar", but i want to store it in double variable "lat1".
Code:
#include <stdio.h>
#include <stdlib.h>
int main(){
unsigned char gpsdata1[]="$GPGGA,091310.000,2255.1682,N,11356.3605,E,1,4,1.62,164";
char myChar;
double lat1;
[Code] .....
View 5 Replies
View Related
Aug 1, 2013
How to initialize double pointer array..?
int (**aLines)[2];
View 3 Replies
View Related
May 18, 2014
I am having a lot of trouble extracting values from a string into a double array.
I have a string that looks something like this: "asdf 1.320 1 234.43 5.00000 3"
All I want to do is extract the doubles and store them in an array of doubles.
View 8 Replies
View Related
Feb 3, 2013
i wanted to sort an array with double bubble sort but it didnt work!
my code is this:
void doubleBubbleSort(int *array, int length) {
int i,j;
for(i=0; i<length--;i++) {
if(array[i]>array[i++])
for(j=i;j>=0&&(array[j]>array[j++]);j--)
std::swap(i,j);
[code].....
how to get time like 1.56 seconds,too!
View 3 Replies
View Related
Jul 11, 2012
I wanna create mesh Array using boost elements, that will be do the same that code below, but can accept numbers of double. Any boost array that give me needed functionality. It will be great that advised element has the same argument list. I mean
// [base,stride,bound)
// [0,2,4)
Or may be there are any opportunity modify this boost::multi_array_types::index_range in order do make it accept double...
1>------ Build started: Project: HP_A.1_d_, Configuration: Debug Win32 ------
1> Main.cpp
1>c:all myс++ha level 9solutionlevel 9hp_a.1_d_main.cpp(15): warning C4244: 'argument' : conversion from 'double' to '__w64 int', possible loss of data
1>c:all myс++ha level 9solutionlevel 9hp_a.1_d_main.cpp(15): warning C4244: 'argument' : conversion from 'double' to '__w64 int', possible loss of data
1>c:all myс++ha level 9solutionlevel 9hp_a.1_d_main.cpp(18): warning C4244: 'argument' : conversion from 'double' to 'unsigned int', possible loss of data
1>c:all myс++ha level 9solutionlevel 9hp_a.1_d_main.cpp(20): warning C4244: 'argument' : conversion from 'double' to 'unsigned int', possible loss of data
1>c:all myс++ha level 9solutionlevel 9hp_a.1_d_main.cpp(20): warning C4244: 'argument' : conversion from 'double' to 'unsigned int', possible loss of data
1> HP_A.1_d_.vcxproj -> C:all myс++HA level 9SolutionLevel 9DebugHP_A.1_d_.exe
========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========
Code:
#include <boostmulti_array.hpp>
#include <iostream>
typedef boost::multi_array_types::index_range range;
[Code]....
View 1 Replies
View Related
Dec 5, 2014
I'm trying to understand why a conversion from a byte array (unsigned char) to a double works when done one way and not antoher.
In the example code I test by hard coding an unsigned char array of the same bytes that the double consists of.
When I copy the bytes to a long long and cast to double the result is not the original double but if I use a struct the bytes can be set and the conversion happens.
Seems to me that both ways should work. I'd just like to know what is going on with the "struct way" that makes the conversion correct. I see in debugger that the bytes in memory are the same for piAsLong and u.bytes.
My compiler is VS 2012 and a long long and double are both 8 bytes (tested with sizeof). This is learning activity only.
Code:
#include "stdafx.h"
#include <iostream>
#include <iomanip>
using namespace std;
union {
double d;
[code]....
View 6 Replies
View Related
Jan 29, 2014
So I have a double array, where I'm inputting float numbers to certain points in an array. Sometimes, the numbers that are printed out are completely different from what I put in.Here is the part of the code:
Code: .
while( token != NULL ) {
num = atof(token);
test[j][i] = num;
printf( "
%s, i is %d, j is %d
", token,i,j );
printf( "number is %f
value test of i,j is %f
[code]....
Why the float num prints out fine, but when put into an array becomes garbage?I'm taking string values from a csv file and turning them into floats, but no problems seem to crop up there.I reset i when appropriate and increment j when needed, so I don't think my problems are from incorrect array values (though they might be)
View 2 Replies
View Related
Mar 9, 2014
Can you use data type double or float for an array? ie
double n[];
or
float a;
float m[a];
My code wont accept me changing the data type..will on accept int data type. I get the following error when I try to change the array to double or float..
3310E:C++vector.cpp[Error] invalid types 'double [1000][double]' for array subscript
View 4 Replies
View Related
Jun 1, 2014
I am trying to make a double array, but I keep getting an error Segmentation fault (core dumped) when I make more than 105 elements in the array. I need to make 114 elements.
I am building my array with myarray[999] and increasing the number doesn't seem to do anything.
How can I store more elements in my array?
View 1 Replies
View Related
Apr 25, 2013
ok here is the question: Write a function that will initialize a double data array element to 0.0 ?
View 4 Replies
View Related
Dec 27, 2012
I am studying/writing/ code for a future Advanced Data Structure class in C++; however I am not suppose to use STL, Templates and etc (the way I just code "kinda" of resembles what I have to use).
My application is suppose to read/analyze all integers contained in a text file of 5-digit integers (10000 - 99999).
For simplicity I am using the following input (or check the attached):
20007 20008 20009
20010 20010
20012 20012
20013
20014 20010
20015
20016 ....
So far, my code is not displaying/printing the lists separated by the first digit of these 5-digits integers. I am expecting it to display/print logically/similar to the following:
Output:
Results for input file numbers.txt:
27 total integers read from file
The 3 unique integers beginning with digit 1 were
18399 17342 19948
The 6 unique integers beginning with digit 3 were
39485 34710 31298 38221 35893 32791
The 4 unique integers beginning with digit 4 were
43928 49238 45678 43210
The 6 unique integers beginning with digit 6 were
64545 62987 66221 61777 66666 65432
The 2 unique integers beginning with digit 8 were
88888 86861
The 1 unique integer beginning with digit 9 was
98765
There were 22 unique 5-digit integers in the file.
The highest unique count in one list was 6 integers.
My code that will follow soon displays/prints only the LAST 5-digits "group" of integers (in this case the 5-digits starting with 3). I am not sure what's wrong with my code; perhaps I am not designing it correctly. May be my calls in it are on the wrong place or I have to write all integers and then traverse it and output it (if that's the case, I am not sure how).
My code follows:
#include <iostream>
#include <fstream>
#include <iomanip>
using namespace std;
const int MAX_CELLS = 10;
const int UNIQUE_FIVE_DIGIT = 5;
[Code] .....
View 10 Replies
View Related
Oct 25, 2014
When I run the program, when it displays the lowest temtpature, it shows the address instead of the actual number.
Code:
/*********************************************
* File: b.cpp
* Description: Create a C++ program that declares a 100-element array of doubles representing temperature readings. Pass the array to a function to be partially filled by the user. When the user is done entering temperatures, the function should return the number of elements added to the array. The main function should then display the maximum and minimum temperatures in the array.
***********************************************/
#include <iostream>
using namespace std;
//prototypes
void getData(double arr[]);
[Code] ....
View 2 Replies
View Related
Aug 3, 2014
I'm having a pretty weird problem. I've created an unsigned char array for an image buffer:
buffer_rgb = new unsigned char[_w * _h * 3];
memset(buffer_rgb, 0x0, sizeof(unsigned char)* _w * _h * 3);
And I add pixel color values to it like so:
buffer_rgb[i] = ((unsigned char)(col[0] * 255));
buffer_rgb[i + 1] = ((unsigned char)(col[1] * 255));
buffer_rgb[i + 2] = ((unsigned char)(col[2] * 255));
Where col is a 'vec4' struct with a double[4] with values between 0 and 1 (this is checked and clamped elsewhere, and the output is safely within bounds). This is basically used to store rgb and intensity values.
Now, when I add a constant integer as a pixel value, i.e.:
buffer_rgb[i] = ((unsigned char)255;
Everything works as it should. However, when I use the above code, where col is different for every sample sent to the buffer, the resulting image becomes skewed in a weird way, as if the buffer writing is becoming offset as it goes.
These two images illustrate the problem:
tomsvilans.com/temp/140803_render_skew.png
tomsvilans.com/temp/140803_render_noskew.png
You can see in the 'noskew' image all pixels are the same value, from just using an unchanging int to set them. It seems to work with any value between 0-255 but fails only when this value is pulled from my changing col array.
Whole function is here:
// adds sample to pixel. coordinates must be between (-1,1)
void Frame::addSample(vec4 col, double contrib, double x, double y) {
if (x < -1 || x >= 1 || y < -_aaspect || y >= _aaspect) {
[Code] .....
View 1 Replies
View Related
Oct 1, 2014
I am trying to create an array of objects. I have to be abstract unfortunately (can't show you all my code), but this is the general gist of what I'm doing. Let's say these objects will be Widgets.
I would assume a vector of widgets would be better than an array due to it's flexibility. So if I use an array, let's say that my widjet is called MY_WIDGET and MY_WIDGET has a constructor of MY_WIDGET(int x, int y);
I have tried using an array to hold several widgets like this.
int i = 10; // obviously this number will be decided dynamically.
int x = 10;
int y = 10;
MY_WIDGET *array[i];
for(int x = 0; x < i; x++)
{
arr[x] = new MY_WIDGET(x,y);
y +=30; // moves the next widget down so they don't cover each other.
}
So now I have an array of objects or Widgets in this case. I'm only using widgets for this example because I want to display the use of a constructor.
So, while my compiler (MinGW) will let me do this, I still get an error at runtime because of the way I have dynamically sized my array 'arr[i]'.
The usual way of doing this, let's say for an int (see below), I can't apply for an object with a constructor requiring multiple parameters to construct it. Maybe I can't, I'm not sure.
int *x = 0;
x = new int[10];
This begs the question, should I be using a vector and if so, how do I dynamically push_back constructed objects into a vector without running into the same problem above. I have tried the below and get problems at compile time telling me that 'the base class is private within this context'. Not sure how to go about this but if I can understand how to dynamically create objects with constructors and add them to a vector or array I should be able to do this.
vector<MY_WIDGET> myvec;
MY_WIDGET the_widget(x,y);
myvec.push_back(the_widget);
y+=30;
View 4 Replies
View Related
Feb 28, 2013
How to load .wav files. Say there are several .wav files in a folder called "sounds" in "My Documents", what would be the steps on loading them in a vector or array. I'm thinking I should use a vector type of array to not worry for a fixed size.
View 3 Replies
View Related
Nov 30, 2013
For a rather complex and strange reason that I won't explain right now, I need to have this going on in my program.
class FVF{
private:
vector<vector<float>> data; //Contains fvf data for Direct3D stuff
public:
[Code].....
The FVF allows this Model3D class to also be compatible with file handling methods I've got, but here's the problem. D3D buffers require an array to feed them the information, and I know that for a single dimension of vector I can use vec.data(), how to do this for multiple dimensions.
I think the best Idea I've got so far is to set the vector within the Model3D class as a pointer, then I can union it with a float pointer... Once I can guarantee the information is correct and complete, manually transfer the contents of the vectors into the float pointer.. (The union is to reduce memory needed instead of having the data repeated in vectors and arrays)
how I could just pass these as arrays?
View 4 Replies
View Related
Dec 6, 2013
This can be done very easy, but I assume there is a better way to do it.
assume that I have a vector or a signal like
x=[1 1 1 1 1]
want to shift it by one unit to the right I have
x[n+1] gives
xn=[0 1 1 1 1 1]
and x[n-1] vies
xn=[1 1 1 1 0]
as you can see the length of the original vector or array does not change.
How can I solve this problem without specify the length of the output vector. The size of the output array should be the same as the input array, but I couldn't find a way to do it without adjusting the size.
View 2 Replies
View Related
Oct 29, 2014
// dynamic memory for 2D char array
char **board = (char**) calloc(column, sizeof(char*));
for(int i=0; i<column; i++)
board[i] = (char*) calloc(row, sizeof(char));
//for char 255 row and colum
char temp[255];
inputFile.getline(temp,255);
[Code]...
so i want to change into vector class like Vector<board>row;
View 8 Replies
View Related
Feb 10, 2014
I am trying to pass a 2D array called f (coming from a text file with 9 columns of numbers and 297,680 rows) that was created using the vector container in my main() to the function myfunc. I'm just trying to figure out how to pass the address of f in main() to myfunc(), so that myfunc() has arguments consisting of a pointer g (that accepts the address of f as an input) and an int.
This is the error from the compiler:
test_2d.cc: In function ‘int main()’:
test_2d.cc:47:25: error: cannot convert ‘std::vector<std::vector<double> >*’ to ‘double (*)[297680][9]’ for argument ‘1’ to ‘int myfunc(double (*)[297680][9], int)’
return myfunc(&f,count);
^
Here is my code:
#include <iostream>
#include <fstream>
#include <iomanip> //allow setprecision to get all the decimal points
#include <vector>
#include <string>
[Code] ...
View 5 Replies
View Related
Apr 23, 2013
Creating a Vector Array + Reading a file ....
View 1 Replies
View Related
Jan 3, 2013
In a numerically intensive code, I have a Cartesian vector class Vector3d which has the normal operator overloading and basic functions such as dot product, magnitude, etc. For simplicity, assume that it is not a templated class and its components are of type double.
I frequently need large 1-d arrays (e.g. stl vectors) of Vector3d. Two use-cases must be satisfied:
1) The trivial case in which the data are stored as stl vectors of Vector3d;
2) The more difficult case where the individual components are stored as stl vectors of double, and are not guaranteed to be contiguous in memory (so one cannot rely on "stride").
Assuming the array lengths are all identical, I'd like to be able to access both types in a single loop. The straightforward way for case 2) is to construct a temporary Vector3d from the three components (indexed with the loop index). However, I would prefer not to incur the overhead of the constructor.
Is it possible using template metaprogramming. Ideally I'd like a CompositeVector3d that inherits from Vector3d and is constructed with the component vectors, but can be dereferenced using the loop index in the same way as one would do with case 1.
I am not looking for the typical template metaprogramming utility of being able to operate on the entire array without explicit loops. I just want the syntactic "sugar" whereby CompositeVector3d and Vector3d act the same, plus the avoidance of the cost of the constructor. I am not averse to using an additional templated class (perhaps a Field or a View class) to access the basic storage in both case.
Is it possible to do this without using a full template metaprogramming utility?
View 1 Replies
View Related
Jan 21, 2014
This code work perfectly, as follows.
Code #A:
#include <iostream>
#include <cstring>
#include <vector>
using namespace std;
typedef std::vector <void *> gr_vector_void_star;
gr_vector_void_star output_items;
[Code] .....
Output of above code #A:
char * sentence = "Angel";
for (int i=0; i < 5; i++)
{ out[i] = sentence[i]; } // error: invalid conversion from 'char' to 'char*' [-fpermissive]
It fails to compile with error message "invalid conversion from 'char' to 'char*'".
View 19 Replies
View Related