我正在用C++编写代码,并希望计算两点之间的距离. 问题1:
我有两个点P(x1,y1,z1)和Q(x2,y2,z2),其中x,y和z是浮点数/双精度数.
我想找到这两点之间的距离.一种方法是:
square_root(x_diff x_diff + y_diff y_diff + z_diff*z_diff)
但这可能不是最有效的方式.(例如更好的配方或现成的实用工具math.h
等)
问题2:
如果我只是想确定P和Q是否实际上是相同的点,是否有更好的方法?
我的输入是两个点的x,y和z坐标.
谢谢
我试图在堆栈上为固定大小分配一个整数数组
#include<iostream>
using namespace std;
int main(){
int n1 = 10;
const int N = const_cast<const int&>(n1);
//const int N = 10;
cout<<" N="<<N<<endl;
int foo[N];
return 0;
}
Run Code Online (Sandbox Code Playgroud)
但是,这会在我N
用于定义固定的最后一行给出错误
error C2057: expected constant expression
.
但是,如果我定义N
为const int N = 10
,代码编译就好了.我应该如何将n1
其作为一个特征来进行转换const int
?
我试过了: const int N = const_cast<const int>(n1)
但这给了错误.
编辑:我正在使用MS VC++ 2008编译这个...用g ++编译好.
我有一个网格,有某些类型的元素(例如三角形,四边形).对于每个元素,我知道它的所有顶点,即三角形2D元素将具有3个顶点v1,v2和v3,其x,y,z坐标是已知的.
问题1
我正在寻找一种能够返回所有边缘的算法......在这种情况下:
edge(v1,v2),edge(v1,v3),edge(v2,v3).根据每个元素有多少个顶点,算法应该有效地确定边缘.
问题2
我正在使用C++,那么,存储上述算法返回的边缘信息的最有效方法是什么?例如,我感兴趣的是一个元组(v1,v2),我想用它进行一些计算然后忘记它.
谢谢
我想对points_vec向量进行排序,如下面的伪代码所示.我想通过像x或y或z这样的坐标值对这个向量进行排序
class A{
std:vector<double*> points_vec;
void doSomething();
}
Run Code Online (Sandbox Code Playgroud)
然后,在方法A::doSomething,
我想要排序这个向量:
void A::doSomething() {
std::sort(points_vec.begin(), points_vec.end(), sortPoints());
}
Run Code Online (Sandbox Code Playgroud)
有人可以告诉我sortPoints()
方法的语法..最好我希望它是A类的方法.这篇文章创建了一个struct
这样做,不知道我是否应该struct
在类中创建一个类似的.还有另一种方法来处理这个问题吗?
谢谢
我遇到了以下错误.
Foo
.该类的实例存储在std :: vector vec
中class B
.new
和删除该对象来分配内存来创建类A的实例~Foo()
.代码编译,但我在运行时崩溃了.如果我delete my_a
从类的desstructor中禁用Foo
.代码运行正常(但会有内存泄漏).
有人可以解释这里出了什么问题并建议修复?
谢谢!
class A{
public:
A(int val);
~A(){};
int val_a;
};
A::A(int val){
val_a = val;
};
class Foo {
public:
Foo();
~Foo();
void createA();
A* my_a;
};
Foo::Foo(){
createA();
};
void Foo::createA(){
my_a = new A(20);
};
Foo::~Foo(){
delete my_a;
};
class B {
public:
vector<Foo> vec;
void createFoo();
B(){};
~B(){};
};
void B::createFoo(){
vec.push_back(Foo());
};
int …
Run Code Online (Sandbox Code Playgroud) 我有一些基本的C++设计/语法问题,非常感谢您的回复.
即我想达到这样的目的:
region[i].elements
=区域i的所有元素的列表.
问题1: 以下语法(请参阅下面的代码)/ design是否正确.我在这里错过了什么吗?
编辑
struct elem的实例是由其他一些类创建的,它的内存释放是该类的处理,我只想使用reg [i] .elements list(vector)访问该对象及其成员......所以,我该怎么办将这些元素对象添加到类Region中的向量"elements"中?
//我已经有了这个需要使用的结构
struct elemt {
int* vertex;
int foo1;
double foo2;
};
class Region{
public:
// I am not sure what should be the syntax here!
// is it correct?
std::vector <elemt*> elements;
}
// Following is the constructor of "class A"
A::A(){
// --header file defines: Region *reg;
// Let numOfRegions be a class variable. ( changes based on "Mac"'s suggestion)
numOfRegions = 100;
//allocate …
Run Code Online (Sandbox Code Playgroud) 我想对函数的一堆参数进行相同的处理.有没有办法循环所有参数?我按照以下代码中的方式进行操作,但是想看看是否有一种紧凑的方法来执行此操作.
void methodA(int a1, int a2, int b1, double b2){
//.. some code
methodB(a1, f(a1));
methodB(a2, f(a2));
methodB(b1, f(b1));
methodB(b2, f(b2));
// more code follows ...
}
int f(int a){
// some function.
return a*10;
}
double f(double b){
return b/2.0;
}
Run Code Online (Sandbox Code Playgroud) 在一个类中,我试图通过传递同一个类的方法对向量进行排序.但它在编译时会出错.谁能说出问题是什么?谢谢!
它给出以下错误:bool (Sorter::)(D&, D&)' does not match
bool 类型的参数(Sorter ::*)(D&,D&)'
我也试过用 sortBynumber(D const& d1, D const& d2)
#include<vector>
#include<stdio.h>
#include<iostream>
#include<algorithm>
class D {
public:
int getNumber();
D(int val);
~D(){};
private:
int num;
};
D::D(int val){
num = val;
};
int D::getNumber(){
return num;
};
class Sorter {
public:
void doSorting();
bool sortByNumber(D& d1, D& d2);
std::vector<D> vec_D;
Sorter();
~Sorter(){};
private:
int num;
};
Sorter::Sorter(){
int i;
for ( i = 0; i < 10; i++){
vec_D.push_back(D(i));
}
}; …
Run Code Online (Sandbox Code Playgroud) 我正在分析 Fortran 代码并有一个简单的问题。
我想知道下面代码中 100 和 200 处的“继续”语句的作用。
它会增加 i 和 j 计数器吗?如果是这样,那么条件不会if( .not. flg )
包含flg
循环中 flg 的“最后一个值”的值吗j = i+1 to N
?
do 100 i = 1, N-1
flg = .false.
do 200 j = i+1, N
if( "my condition" ) flg = .true.
200 continue
if( .not. flg ) then
! do something here.
endif
100 continue
Run Code Online (Sandbox Code Playgroud) 我有一个vec_A
存储实例的实例class A
:vec_A.push_back(A());
我想在稍后阶段删除向量中的一些元素,并有两个问题:a)元素被删除为:vec_A.erase(iterator)
是否需要添加任何其他代码以确保没有内存泄漏?。
b) 假设条件if(num <5)
是num是否在特定的numberList中。鉴于此,是否有比我下面说明的更好的方法来删除向量的元素?
#include<vector>
#include<stdio.h>
#include<iostream>
class A {
public:
int getNumber();
A(int val);
~A(){};
private:
int num;
};
A::A(int val){
num = val;
};
int A::getNumber(){
return num;
};
int main(){
int i =0;
int num;
std::vector<A> vec_A;
std::vector<A>::iterator iter;
for ( i = 0; i < 10; i++){
vec_A.push_back(A(i));
}
iter = vec_A.begin();
while(iter != vec_A.end()){
std::cout << "\n --------------------------";
std::cout << "\n Size before erase …
Run Code Online (Sandbox Code Playgroud) 我有一个t_vec
存储类实例的引用的向量Too
.代码如下所示.在main
,我有一个向量t_vec_2,其内存地址与B::t_vec
.
但是当我尝试访问t_vec_2 [0] .val1时,它会出错val1 not declared
.
你能指出出了什么问题吗?此外,如果您知道从方法返回矢量的更好方法,请告诉我!提前致谢.
class Too {
public:
Too();
~Too(){};
int val1;
};
Too::Too(){
val1 = 10;
};
class B {
public:
vector<Too*> t_vec;
Too* t1;
vector<Too*>& get_tvec();
B(){t1 = new Too();};
~B(){delete t1;};
};
vector<Too*>& B::get_tvec(){
t_vec.push_back(t1);
return t_vec;
}
int main(){
B b;
b = B();
vector<Too*>& t_vec_2 = b.get_tvec();
// Getting error
std::cout << "\n val1 = " << t_vec_2[0].val1;
return 0;
}
Run Code Online (Sandbox Code Playgroud)