C++ :: Specific Iterator Type - Find Distance By Simple Subtraction
Sep 24, 2014
I have a templated container that defines a forward iterator.
Calling std::distance on these iterators will generate code that will count the number of iterations it takes to get from the first parameter to the second, by repetitively incrementing.
Internally, the iterators can easily find the distance by a simple subtraction.
What I want to do is overload std::distance for these iterators so that it will take advantage of the simple calculation rather than repetitive increments.
The simple solution of course would be to make the iterators random access, but this would require that they support functionality that is not 'logical' for the container. Access to the container only makes logical sense when iterating one item at a time in the forward direction.
Code:
#include <iterator>
template <typename T>
class Container {
public:
class iterator : public std::iterator<std::forward_iterator_tag, T> {
[Code] .....
View 2 Replies
ADVERTISEMENT
Oct 5, 2013
[URL] ....
I've been getting these errors on two computers through four different compilers. It seems the directories arnt set up. If that's the cause, I have no clue how to resolve that.
Its a very simple prog too; it just calculates a dist, using dist formula.
#include <cstdlib>
#include <iostream>
#include <math.h>
using namespace std;
void calcDistance (int x1, int y1, int x2, int y2);
[Code] ....
View 6 Replies
View Related
Nov 7, 2014
I am trying to find the distance of 3 dimensional bodies. I am able to find the two bodies furthest from each other, but i cannot find the bodies closest to each other.
it displays 0(it's body to itself). is there a way to negate the program from comparing it to itself?
The program works but it always find the closest body as itself. Part of the program.
for(int l=0; l<size; l++){
cout<<s[l].getName()<<endl;
int smallest=0;
for(int q=1;q<size;q++){
[Code] .....
View 1 Replies
View Related
Jul 13, 2014
I am trying to find the distance between two void pointers, so I can follow this distance to a certain pointer in a vector when given only the previous element in that vector.
int distance = (char*) prev - (char*) first;
next = (char*) cv->elems + cv->elemsz + distance;
Basically, prev and first are void pointers. I am trying to cast them into a char, subtract the first element in the vector from the previous one, and then use this distance to determine what the next element in the vector is. However, it is not working. I am not sure how to do this. To complicate matters, prev is a const void *.
View 7 Replies
View Related
Nov 18, 2013
I'm working on a program where I have a vector full of <myClassType> structs.
I'm trying to insert items into a vector, searching first through the vector to make sure the value isn't already in the vector before inserting it. The "find" function isn't working properly.
I keep getting C2678 "binary '==': no operator found which takes a left-hand operand of type "myClassType" or there is no conversion errors in Visual Studio 2010.
I know it's something having to do with the find function and my iterators, but I can't, for the life of me, figure out what it is.
I've tried switching to const_iterators, but I get the same error message.
void foo::insert(const myClassType& en) {
vector<myClassType>::iterator it;
vector<myClassType>::iterator it1;
it = find(Table.begin(), Table.end(), en.memberOne);
[Code] .....
View 3 Replies
View Related
Jan 25, 2013
I want to get the iterator position after to use find if:
std::list<Texture*>::iterator result = find_if(
texturelist.begin(),
texturelist.end(),
std::bind2nd<CompareTEX>(CompareTEX(),n_tex));
if (result != texturelist.end()) {
return // position result
}
View 5 Replies
View Related
Jul 3, 2013
Currently I am working on a program that will find the actual distance between two points on a grid. It also determines the angle of the line segment in degrees. Now, i need it to be able to find any other points on or near the line. It will be running in a loop to find each additional point sequentially until all the points have been plotted. Unfortunately, I am not entirely sure how this is done. So far, I think that I could develop an algorithm that converts the angle into a ratio of vertical movements to horizontal ones.
View 7 Replies
View Related
Sep 4, 2013
I defined the following function to find out the iterator of a certain value in the vector. I defined it as such so if the value exist in the vector then return a iterator of it, if not then return a pointer pointing to nonsense.:
vector<tIndex_t>::iterator unlabelTit(const tIndex_t index) {
for(vector<tIndex_t>::iterator it=unlabelT.begin(); it<unlabelT.end(); it++) {
if(index==*it) return it;
} return NULL;
}
But looks this one is not accepted by compiler, saying I cannot do this kind of comparison like:
unlabelTit(i)!=NULL;
so I just delete the return NULL; and then the compiler giving me warning about no return statement before }.
a pointer pointing to nonsense? how to do that?
View 3 Replies
View Related
Mar 16, 2015
im having trouble with a function im writing. Its supposed to find the minimum value in an array and return the location of that value heres what i have so far :
int findLowest (int numb []) {
// findLow will hold the subscript of the lowest value in the array
int findLow = numb[0];
int x;
for (x = 0; x < 5; x++){
if (numb[x] < findLow)
findLow = x;
}
return findLow;
}
View 3 Replies
View Related
Feb 16, 2014
In my C++ program, lets call it menu.exe, I want the user to be able to run a specific program when selecting a specific menu, let's call this program cios.exe.
As the users of my program can have the cios.exe installed in any folder location, I need a way to first locate where the cios.exe is located and then start it with ShellExecute. My problem is : How do I find the path to where cios.exe is located in anyones PC as it can be installed it any folder location.
View 3 Replies
View Related
Apr 17, 2015
Here's my code so far:
Code:
#include <iostream>
#include <iomanip>
using namespace std;
int main() {
int dayNumber = 1;
[Code] ....
The code, when run, prompts the user to input an integer like this:
Code:
Day 1
Andy :>12
Bill :>7
Charlie :>15
Day 2
Andy :>5
Bill :>25
Charlie :>14
.
.
.
etc.
Ok, so the code prompts the user to enter an integer for each of the 3 persons and then increments the "Day" and so on... When the user enters a negative value (-1, -2, etc.), the loop is broken and the program ends. Alright, everything is hunky-dory so far. 2 things which I can't figure out.
1. when the user doesn't enter anything and just hits return, the cursor drops a line and is still awaiting an input but doesn't show the prompt "Andy :>", for example. How can I get it to repeat the last prompt when the user doesn't enter anything? Like:
Code:
Day 1
Andy :>
Andy :>
Andy :>12
Bill :>25
Charlie :>15
.
.
etc.
2. When the user enters a letter or a special character, the program blows up. How can I correct this?
I've tried changing the data type for the variable used for the input, tried using getline, get, etc. With my current beginner knowledge, I'm missing something. So how can I get this to work?
The program should allow only integers to be entered, while allowing a negative number to trigger the loop to break or the program to end, and while re-prompting the last person if the user entered an invalid input.
View 13 Replies
View Related
Jan 14, 2014
A C++ container type called std::map is used to store elements that are formed by a combination of key value and mapped value. How do you iterate through this container and find the value mapped to a specific key?
View 3 Replies
View Related
Oct 28, 2013
Just wondering about how to write extremely simple version of 'find' in C: It just lists the path names of the files in the specified directories and all subdirectories.For example,
Code:
$find_version .
./foo
./bar
./baz
./baz/other
[Code]....
View 6 Replies
View Related
Jul 3, 2013
looking for a simple LED type control for Visual Studio 2008. I just need a control that I can add to the toolbox where I can pass a parameter to define the colour. This is an MFC based application. how to add a new control to the toolbox. I have been programming in 'C' for many years but find some of the IDE's confusing as to how to do things (as above)
View 4 Replies
View Related
Oct 15, 2013
I am trying to print a specific line from a textfile
e.g
I have a text file called info.txt and inside it contains the id,item name, price, quantity
Code:
1,shirt,100,10
2,pants,50,9
3,pen,20,8
I know how to find a specific word at the line in the file but how do I find and print out the specific line e.g(print out just the entire contents of line 2)?
Code:
string temDescription;
ofstream fout;
int curLine = 0;
[Code].....
View 1 Replies
View Related
Sep 13, 2013
I've been trying to do a RegEx, but I just can't seem to find the solution for it.
Do the following to find Test:
Test55: Will be allowed
TestABC: Will NOT be allowed
Basically, if Test is followed immediately by anything else other than a case-insensitive letter (not [a-zA-Z]), then it will pass.
View 3 Replies
View Related
Jul 20, 2013
I'm trying to make a very simple game in SFML, and i have a problem. Whenever i try to create sf::Sprite for the class where all properties of Player (his sprite, health, speed, etc.) It gives me error.
#include <sfml.h>
#include <list>
class Playerclass{
public:
int xspeed, yspeed;
float health;
sf::Sprite entsprite();
[Code] ....
The error is with player.entsprite.setTexture(texture) : "'player.Playerclass::entsprite' does not have class type".
View 2 Replies
View Related
Oct 2, 2013
#include<iostream>
#include<math.h>
#include<string>
using namespace std;
class houseinfo{
private:
string name;
string address;
[Code] .....
View 2 Replies
View Related
Mar 5, 2013
How do I make a specific character show up a specific amount of times?
Like I am generating a random number then I need to make "|" show up that many times on the screen.
View 1 Replies
View Related
Apr 18, 2014
I am working on an assignment where I have to subtract two very large integers. How can I write it's code provided that I have both numbers in a character array with each index holding a fraction of the original number. Like if I have a number 123456789 in an array then
arr[0]='1';
arr[1]='2';
arr[2]='3';
arr[3]='4';
and so on. n
nNw if i have to subtract this number from an other number, how can I do that?
View 4 Replies
View Related
Mar 12, 2014
I am looking for simple code that subtract two time interval. I have time t1=5hour 30 minute and other time in 24 hour format. This code i written but it not working as expected
main() {
intTime1;
intTime2;
int hour=10;
int minute=5;
int second=13;
int h;int m;
[Code] ....
Is there any easy way of doing above code. Above two code section not working....
View 8 Replies
View Related
Jul 7, 2014
I'm working on a matrix class and I've hit a few snags. Here's what I've got so far:
Matrix.h
#include <iostream>
#include <conio.h>
using namespace std;
class Matrix {
private:
int matrix[50][50];
[Code] ....
Where I have questions is in implementing the addition and subtraction bits into the class itself. I understand that I'm going to have to do a copy operation (this from reading in C++ Primer Plus 5th Edition). Right now I'm just after adding/subtracting as the rest will be variations on the same theme.
So, here it goes:
As I understand the problem, I need to pass my two matrices as arguments to an addition function. This is going to involve having to copy the values of the two existing matrices into temporary matrices within the addition function, then I'll add them, and store them in a new matrix which will be my return value. So...something like this:
int Matrix::matrixAdd(int R, int C, const Matrix & matrix1, const Matrix & matrix2) {
int sum;
Matrix matrix;
for (int i = 0; i < R; i++)
[Code] ....
I do end up with errors there...C2240, and C2662. Again, I'm new to working through this, but that's what I've got. My idea is that I'm passing the maximum size of the array as defined by the user, in this case a 2x2 array, it'll cycle through and add up to that imposed limit...I went 2x2 because it's small enough that testing doesn't drive me up a wall.
View 14 Replies
View Related
Aug 24, 2013
On a controlled buffer of unsigned char it is possible to do subtraction faster than if you followed standard mathematical rules, here is an example:
typedef unsigned char uchr;
uchr num1 = 5; //00000101
uchr num2 = 3; //00000011
num2 = ~num2; // 11111100
++num2; // 11111101
uchr num3 = num1 + num2; // 00000010(2) - computer truncates result to fit char
Since you will be working with a buffer you don't even need to worry about truncating the final bit because the add function will not be able to reach it - unless it is given the ability to grow the buffer in which case you just set the bit to 0 yourself
View 8 Replies
View Related
Feb 23, 2013
I'm writing an addition and subtraction calculator that takes input as: 5+6-3+2. You should be able to add or sub as many numbers as you want. I want the while loop to stop when the user hits enter. I put the getchar() function to catch the and break the loop but it is also swallowing the '-' sign, which I want to use to subtract and is instead adding the numbers with "sum+=number". How can I get around that?
Code:
#include <stdio.h>
int main(int argc, char *argv[]){
int number, sum = 0;
[Code]....
View 3 Replies
View Related
Sep 19, 2013
trying to understand operator overloading, and i wrote some code just to define a "-" operator to do a simple subtraction. SO, i wrote a program that can perform a subtraction between two objects and put the result in the third object. now I Just cant show the result on the console. And also can anyone define the meaning of [b1.x], like I want to know am I assigning the value to the "b1"object or the x variable? This is a very concept that I need to understand.
#include<iostream>
using namespace std;
struct Ok
{
int x;
int y;
};
Ok operator-(const Ok& a , const Ok& b)
{
Ok result;
result = (a - b);
return result;
}
int main()
[Code]...
View 2 Replies
View Related
Feb 10, 2014
I need to create a binary calculator that outputs the operation of subtraction whenever you input 2 4 bit binary numbers. For example:
If I enter
1000
- 0111
View 1 Replies
View Related