小编mem*_*emC的帖子

找到两个3D点之间距离的有效方法

我正在用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坐标.

谢谢

c++ math performance

17
推荐指数
5
解决办法
1万
查看次数

如何将int转换为const int以在堆栈上分配数组大小?

我试图在堆栈上为固定大小分配一个整数数组

#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.

但是,如果我定义Nconst int N = 10,代码编译就好了.我应该如何将n1其作为一个特征来进行转换const int

我试过了: const int N = const_cast<const int>(n1)但这给了错误.

编辑:我正在使用MS VC++ 2008编译这个...用g ++编译好.

c++ stack integer const

11
推荐指数
1
解决办法
2万
查看次数

在网格中使用顶点(2D和3D)查找边缘的算法

我有一个网格,有某些类型的元素(例如三角形,四边形).对于每个元素,我知道它的所有顶点,即三角形2D元素将具有3个顶点v1,v2和v3,其x,y,z坐标是已知的.

问题1

我正在寻找一种能够返回所有边缘的算法......在这种情况下:

edge(v1,v2),edge(v1,v3),edge(v2,v3).根据每个元素有多少个顶点,算法应该有效地确定边缘.

问题2

我正在使用C++,那么,存储上述算法返回的边缘信息的最有效方法是什么?例如,我感兴趣的是一个元组(v1,v2),我想用它进行一些计算然后忘记它.

谢谢

c++ algorithm math geometry mesh

5
推荐指数
2
解决办法
5875
查看次数

通过坐标值排序矢量与3D点 - 语法

我想对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在类中创建一个类似的.还有另一种方法来处理这个问题吗?

谢谢

c++

5
推荐指数
2
解决办法
5791
查看次数

向量相关的内存分配问题

我遇到了以下错误.

  • 我上课了Foo.该类的实例存储在std :: vector vecclass B.
  • 在类Foo中,我通过使用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++ stdvector

5
推荐指数
1
解决办法
184
查看次数

使用矢量数据结构 - 设计和语法问题

我有一些基本的C++设计/语法问题,非常感谢您的回复.

  • 我有N个地区
  • 每个区域都需要存储有关对象"元素"的信息

即我想达到这样的目的:

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)

c++

4
推荐指数
1
解决办法
909
查看次数

循环遍历C++中函数的所有参数

我想对函数的一堆参数进行相同的处理.有没有办法循环所有参数?我按照以下代码中的方式进行操作,但是想看看是否有一种紧凑的方法来执行此操作.

 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)

c++

4
推荐指数
1
解决办法
3500
查看次数

传递一个类方法而不是std :: sort中的函数

在一个类中,我试图通过传递同一个类的方法对向量进行排序.但它在编译时会出错.谁能说出问题是什么?谢谢!

它给出以下错误:bool (Sorter::)(D&, D&)' does not matchbool 类型的参数(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)

c++ sorting stdvector

3
推荐指数
1
解决办法
1525
查看次数

关于for循环中的fortran continue语句的问题

我正在分析 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)

fortran

2
推荐指数
1
解决办法
5717
查看次数

使用擦除删除 std 向量的元素对象:a)内存处理和 b)更好的方法?

我有一个vec_A存储实例的实例class Avec_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)

c++ stdvector

2
推荐指数
1
解决办法
6434
查看次数

从方法返回对向量的引用并使用其公共成员

我有一个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)

c++ stdvector

1
推荐指数
1
解决办法
550
查看次数

标签 统计

c++ ×10

stdvector ×4

math ×2

algorithm ×1

const ×1

fortran ×1

geometry ×1

integer ×1

mesh ×1

performance ×1

sorting ×1

stack ×1