小编Shi*_*bli的帖子

初始化结构的向量

我有

struct Vector {

    float i,j,k;
}
Run Code Online (Sandbox Code Playgroud)

我想将以下声明的vec的所有元素归零(i,j,k = 0)

std::vector <Vector> vec;
vec.resize(num,0);
Run Code Online (Sandbox Code Playgroud)

我不想使用reserve()然后push_back()逐个零.另一件事是,在成功初始化vec之后,我想在操作之后将vec的所有成员再次设置为零.有没有类似memset的矢量?

编辑: 我比较了Mike Seymour和Xeo的答案中的所有方法,size_t size = vec.size(); vec.clear(); vec.resize(size);如果它们在循环中频繁重复,则结果 最快.

c++ structure initialization vector

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

`-1.$ e + 000`是什么意思?

这个符号是什么意思-1.$e+000?这些东西包含在哪个类别中,或者我可以搜索哪些关键字?

在此输入图像描述

编辑:提高精度后,这是我得到的:

在此输入图像描述

c++

3
推荐指数
2
解决办法
850
查看次数

结构矢量值意外变化

我有一个奇怪的问题.有一个结构向量.使用临时结构,我push_back到结构向量.但是当我检查第一个成员时cnt,我发现它变了.任何的想法?(下面的代码是简化版,但代表性的一个)

struct Vector
{
  float *dim;

  Vector ()
  {
    dim = new float [3];
  }
};

struct Face
{
  float an_N, an_P;
  int P, N;
  Vector Af;
  float Ad;
  Vector cnt;
  float ifac;
  float mf;
};

std::vector <Face> face;

Face temp_face;

for (;;)
{
    temp_face.cnt.dim[0] = 0.f;
    temp_face.cnt.dim[1] = 0.f;
    temp_face.cnt.dim[2] = 0.f;

    for (int q=0; q<n_vtx_2D; ++q)
    {
        temp_face.cnt = temp_face.cnt + pt[vtx[q]] / n_vtx_2D;                
    }                 

    face.push_back(temp_face);
}

std::cout << face[0].cnt.dim[0] << std::endl;
Run Code Online (Sandbox Code Playgroud)

产量

0.25

0

c++ structure stdvector

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

在编译时在float和double精度之间切换

如果我想在编译时在float和double精度之间切换,我应该在哪里看看.就像,如果用户想要浮动而不是双精度,我怎么能保持这种灵活性呢?换句话说,我应该如何有条件地定义一个可以是float或double精度的变量?

c++ double-precision floating-point-precision

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

find_if的两个条件

在a中std::vector<unsigned int>,我想找到元素的位置,该位置是小于某个数字的最大数.例如:

v = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
Run Code Online (Sandbox Code Playgroud)

我想找一个小于8的最大数字.这个数字是7.

以下代码不正确,但这可能是我想要的.

std::vector<unsigned int>::iterator pnt = std::find_if (v.begin(), v.end(), [](const unsigned int& x) { return x < 8; && x == MAX; });
Run Code Online (Sandbox Code Playgroud)

c++ algorithm vector c++11

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

每次都获得不同的地址

在下面的代码中,每次为第一个元素获取不同的地址std::vector v.为什么会这样?

#include <memory>
#include <iostream>
#include <vector>

int main()
{
    std::vector<int> v;

    for (int i=0; i<10; ++i)
    {
        int b = i;

        v.push_back(b);

        std::cout << std::addressof(v[0]) << std::endl;
    }

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出:

0x603010
0x603030
0x603010
0x603010
0x603050
0x603050
0x603050
0x603050
0x603080
0x603080
Run Code Online (Sandbox Code Playgroud)

c++ g++ stdvector memory-address c++11

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

与std :: vector的元素组合

在下面的代码中,目的是foo组合调用每个元素vector<Grid> gr.是否有内置的STL功能,如果没有,对大型容器执行此操作的最佳方法是什么?注意,既然grid[0]影响grid[1]也是如此,grid[1]不应该调用该函数grid[0].所以,没有排列,只有组合.顺便说一句,这篇文章没有回答我的问题.

#include <iostream>
#include <vector>
using namespace std;

struct Grid
{
    void foo (Grid& g) {}
};

int main()
{
    vector<Grid> gr(3);
    gr[0].foo (gr[1]);
    gr[0].foo (gr[2]);
    gr[1].foo (gr[2]);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c++ combinations stl stdvector c++11

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

MPI中的发送和接收缓冲区相同

在我的代码中,每个进程都在数组的某个部分上工作.我希望每个进程将其处理的部分发送到其他进程,并从其他进程接收其他部分.为此,我使用MPI_Allgatherv但我保持发送和接收缓冲区相同:

MPI_Allgatherv (&vel[0],  localSizesFaceV[rank], MPI_DOUBLE, &vel[0],  localSizesFaceV, displsFaceV, MPI_DOUBLE, MPI_COMM_WORLD);
Run Code Online (Sandbox Code Playgroud)

之前我使用此函数用于其他目的,具有不同的发送和接收缓冲区并且它有效.这就是为什么我确信其他参数没有问题.

在2个进程的情况下,其中一个进程不返回.当我将发送缓冲区复制到另一个时std::vector

vector <double> vel2;
vel2 = vel;
Run Code Online (Sandbox Code Playgroud)

并用作vel2发送缓冲区,然后返回所有进程.为什么?

c++ mpi

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

sympy.geometry Point 类运行缓慢

我有一个读取非结构化网格的代码。我围绕以下几何实体编写了包装器sympy.geometry

class Point:
    def __init__(self, x, y, parent_mesh):
        self.shape = sympy.geometry.Point(x,y)
        self.parent_mesh = parent_mesh
        self.parent_cell = list()
Run Code Online (Sandbox Code Playgroud)

一切工作正常,但sympy.geometry.Point每个 的初始化都需要花费大量时间Point。实际上,代码还没有执行完数千点。用 C++ 编写的类似代码只需几秒钟即可完成。如果没有它,代码就足够快了(我删除了它并计时)。我读到一个可能的原因可能是sympy.geometry为了精度而将浮点数转换为有理数。有没有办法(标志)来加速,sympy.geometry因为我不需要精确的精度?

python sympy python-3.x

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

一个不需要实例的类

是否有可能创建一个不需要实例化的类?换句话说,是否可以使用该类的函数而不具有它的实例?

c++ class instance

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