Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/158.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 向量::擦除分段错误_C++_Vector_Segmentation Fault_Erase - Fatal编程技术网

C++ 向量::擦除分段错误

C++ 向量::擦除分段错误,c++,vector,segmentation-fault,erase,C++,Vector,Segmentation Fault,Erase,我在这段代码中遇到了一个分段错误,我不知道为什么: vector <double> *point; for (int i = 0; i < point->size(); i += 3) { for (int j = i + 3; j < point->size(); j += 3) { if (distance((*point)[i], (*point)[i + 1],(*point)[i + 2], (*point)[j],(*poi

我在这段代码中遇到了一个分段错误,我不知道为什么:

vector <double> *point;
for (int i = 0; i < point->size(); i += 3) {
    for (int j = i + 3; j < point->size(); j += 3) {
        if (distance((*point)[i], (*point)[i + 1],(*point)[i + 2], (*point)[j],(*point)[j + 1], (*point)[j + 2]) < treshold){
             point->erase(point->begin() + j, point->begin() + j * 3);
             j -= 3;
        }
    }
}
矢量*点;
对于(int i=0;isize();i+=3){
对于(int j=i+3;jsize();j+=3){
如果(距离((*点)[i],(*点)[i+1],(*点)[i+2],(*点)[j],(*点)[j+1],(*点)[j+2])擦除(点->开始()+j,点->开始()+j*3);
j-=3;
}
}
}
点是点的坐标向量,类似于(x1,y1,z1,x2,y2,z3,…,xn,yn,zn)。 距离这是一个函数,计算给定6坐标的2个点之间的欧几里德距离。 基本上,我会做的是“如果两个点彼此太近,请删除其中一个”。 但我有错。 有什么想法吗

或者,如果必须使用动态内存:

vector <double> *point = new vector<double>;
矢量*点=新矢量;
或者,如果必须使用动态内存:

vector <double> *point = new vector<double>;
矢量*点=新矢量;

删除
行错误。当您可能是指
j+3
时,您有
j*3
擦除
行是错误的。你有
j*3
当你可能是指
j+3

不,
不是向量,它是指向向量的指针。它指向什么?在这个代码中,分段错误到底发生在哪里?为什么每个系列的3个
都被认为是一个点?为什么没有一个
坐标的
向量
,每个
坐标
可以容纳3个doublt?对不起,我的错。指向向量的指针已经初始化,这只是我代码的一个摘录。事实上,如果我在这个循环之前做了这个大小的cout,它就工作了。我之所以使用double向量而不是坐标向量,是因为我使用的库需要double向量。不,
point
不是向量,它是指向向量的指针。它指向什么?在这个代码中,分段错误到底发生在哪里?为什么每个系列的3个
都被认为是一个点?为什么没有一个
坐标的
向量
,每个
坐标
可以容纳3个doublt?对不起,我的错。指向向量的指针已经初始化,这只是我代码的一个摘录。事实上,如果我在这个循环之前做了这个大小的cout,它就工作了。我之所以使用double向量而不是坐标向量,是因为我使用的库需要double向量。我假设它已经初始化了,或者他可能已经注意到了,布兰登的答案才是真正的问题。@Moingduck我承认我没看那么远:)我假设它实际上已经初始化,或者他可能已经注意到了,布兰登的答案才是真正的问题。@Moingduck我承认我没看那么远:)
vector <double> *point = new vector<double>;