C++ 分段错误11:在此排序和搜索问题中

C++ 分段错误11:在此排序和搜索问题中,c++,segmentation-fault,C++,Segmentation Fault,问题: 给定一个整数数组,返回两个数字的索引,使它们相加为一个特定目标。 解决方案- 将金额复制到cpy 对cpy进行排序,以便稍后进行二进制搜索 迭代cpy 搜索目标-当前\u编号 如果在cpy中存在 获取原始向量nums中的索引 将索引附加到结果向量并返回结果向量 #包括 #包括 #包括 使用名称空间std; 类解决方案{ 公众: 向量twoSum(向量和nums,整数目标){ 矢量; 向量结果(2); 结果[0]=0; 结果[1]=0; int indx=0; 对于(indx=0;in

问题: 给定一个整数数组,返回两个数字的索引,使它们相加为一个特定目标。

解决方案-

  • 将金额复制到cpy
  • 对cpy进行排序,以便稍后进行二进制搜索
  • 迭代cpy
  • 搜索目标-当前\u编号
  • 如果在cpy中存在
  • 获取原始向量nums中的索引
  • 将索引附加到结果向量并返回结果向量
#包括
#包括
#包括
使用名称空间std;
类解决方案{
公众:
向量twoSum(向量和nums,整数目标){
矢量;
向量结果(2);
结果[0]=0;
结果[1]=0;
int indx=0;
对于(indx=0;indx>v[i];
}
int目标;
cin>>目标;
溶液ob;
向量=ob.twoSum(v,目标);

很简单,您正在将值写入
cpy
向量,但它的大小为零

复制向量有一种非常简单的方法,只需使用
=

vector<int> cpy = nums;
向量cpy=nums;

这就是您所需要的。您不需要编写的for循环。

很简单,您正在将值写入
cpy
向量,但它的大小为零

复制向量有一种非常简单的方法,只需使用
=

vector<int> cpy = nums;
向量cpy=nums;

这就是你所需要的。你不需要你编写的for循环。

旁注:调试器几乎可以立即找到原因。在调试器中运行程序。等待崩溃。查看回溯寻找线索。如果你不知道需要先适当地调整
向量的大小,你仍然会被卡住,但至少你更接近了曾经使用过gdb,但不知道vector首先需要大小。旁注:调试器几乎可以立即找到原因。在调试器中运行程序。等待崩溃。查看回溯寻找线索。如果你不知道需要先适当地调整
vector
的大小,你仍然会被卡住,但至少你更接近了。是的,我使用过gdb但是我不知道vector首先需要大小。仅供参考,只需一次遍历列表。您也不需要排序。想想
无序集
。仅供参考,遍历列表只需一次遍历。您也不需要排序。想想
无序集