Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/133.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.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++`for`循环应该是多个时只迭代一次 我试图在C++中走一条蛮力的路线来解决LeetCode最明显的问题,即“两和”问题,如本视频中的0:32标记所描述的。本质上,我需要遍历向量中每一个可能的两位数和的组合,直到达到某个期望的目标数。然后返回两个数值的索引,它们的值组合起来等于目标数值_C++_Loops_For Loop_Vector - Fatal编程技术网

C++`for`循环应该是多个时只迭代一次 我试图在C++中走一条蛮力的路线来解决LeetCode最明显的问题,即“两和”问题,如本视频中的0:32标记所描述的。本质上,我需要遍历向量中每一个可能的两位数和的组合,直到达到某个期望的目标数。然后返回两个数值的索引,它们的值组合起来等于目标数值

C++`for`循环应该是多个时只迭代一次 我试图在C++中走一条蛮力的路线来解决LeetCode最明显的问题,即“两和”问题,如本视频中的0:32标记所描述的。本质上,我需要遍历向量中每一个可能的两位数和的组合,直到达到某个期望的目标数。然后返回两个数值的索引,它们的值组合起来等于目标数值,c++,loops,for-loop,vector,C++,Loops,For Loop,Vector,我的代码适用于LeetCode抛出的前17个测试用例。但是对于下面的测试用例,的循环只迭代一次,尽管迭代器从未达到各自的限制(nums.size()-2和nums.size()-1) 我一步一步地调试调试程序,但是我不明白为什么代码会“提前”脱离for循环 解决方案.h #include <vector> #include <iostream> using namespace std; class Solution { public: vector<in

我的代码适用于LeetCode抛出的前17个测试用例。但是对于下面的测试用例,的
循环只迭代一次,尽管迭代器从未达到各自的限制(
nums.size()-2
nums.size()-1

我一步一步地调试调试程序,但是我不明白为什么代码会“提前”脱离
for
循环

解决方案.h

#include <vector>
#include <iostream>

using namespace std;

class Solution {
public:
    vector<int> twoSum(vector<int>& nums, int target) {
        vector<int> result_vector;
        for (int i = 0; i < nums.size() - 2; i++) { // this for loop [undesirably] only iterates once
            for (int j = i + 1; j < nums.size() - 1; j++) { // this for loop also [undesirably] only iterates once
                if (nums.at(i) + nums.at(j) == target) {
                    result_vector.push_back(i);
                    result_vector.push_back(j);
                }
            }
        }
        if (result_vector.size() == 0) {
            result_vector.push_back(-1);
            result_vector.push_back(-1);
            cout << "No solution found.";
        }
        return result_vector;
    }
};
#包括
#包括
使用名称空间std;
类解决方案{
公众:
向量twoSum(向量和nums,整数目标){
向量结果_向量;
for(int i=0;icout作为参数传递给函数的向量
vect

vector<int> vect{3, 2, 4};
程序输出为

( 1, 2 ) 

3-2==1
,这意味着唯一有效的
i
0
,因为
1
不小于
1
“…尽管迭代器从未达到各自的极限…”是错误的。哈…呜呜。出于某种原因,我记得从我上学的时候就需要在每个
循环的结束条件中添加
-1
,以避免越界错误。我将
nums.size()-2
更改为
nums.size()-1
nums.size()-1
更改为
nums.size()
。谢谢,向量以
3
的大小传递,外部for循环从
0
迭代到小于该大小减2。这是外部循环的一次迭代。类似地,内部循环的第一次迭代将从
j=1
运行,直到
j
小于大小减1为止(即从1到1)这是一次迭代。除非你解释为什么你期望/需要那些循环来迭代不止一次,没有人能帮助你——从你提供的预期行为的代码来看,你认为是不希望的。我已经得到帮助。我连接到一个视频来解释这个问题,为什么我要迭代不止一次。
for (int i = 0; i < nums.size() - 2; i++) {
i < nums.size() - 2
i < 3 - 2
for (int i = 0; i < nums.size() - 2; i++) {
#include <iostream>
#include <vector>
#include <utility>

struct Solution 
{
    typedef std::vector<int>::size_type size_type;
    
    std::vector<std::pair<size_type, size_type>> 
    operator ()( const std::vector<int> &v, int target ) 
    {
        std::vector<std::pair<size_type, size_type>> result;
        
        
        for ( size_type i = 1; i < v.size(); i++ )
        {
            for ( size_type j = i; j < v.size(); j++ )
            {
                if ( v[j] + v[i-1] == target )
                {
                    result.push_back( { i - 1, j } );
                }
            }
        }

        return result;
    }
};

int main() 
{
    std::vector<int> v = { 3, 2, 4 };
    int target = 6;
    
    auto result = Solution()( v, target );
    
    for ( const auto &p : result )
    {
        std::cout << "( " << p.first << ", " << p.second << " ) ";
    }
    
    std::cout << '\n';
    
    return 0;
}
( 1, 2 )