类中定义的方法在main中调用时不返回任何内容

问题描述 投票:0回答:1

我不明白为什么在main中调用时,Solution类中的twoSum方法不输出任何内容。请告诉我为什么。程序应输出等于目标变量的两个数字的位置。此属性只有一个有效集。您可以在leetcode上找到此问题:

给出一个整数数组,返回两个数字的索引,以便它们加起来成为一个特定的目标。

您可能会假设每个输入只有一个解决方案,并且您可能不会两次使用相同的元素。

#include <iostream>
#include<vector>
#include<map>
using std::vector;
using std::map;
class Solution {
public:
        vector <int> twoSum(vector<int>& nums, int target) {
        map <int,int> mymap;
        vector <int> res;
        for(int i=0; i<nums.size(); i++)
        {
            mymap[nums[i]]=i;
        }
        for(int i=0; i<nums.size(); i++)
        {
            int result = target - nums[i];
            if(mymap.find(result)!=mymap.end() && mymap[result] != i)
            {
                res.push_back(i);
                res.push_back(mymap[result]);

                return res;
            }
        }

        return res;
    }

};
int main()
{
    vector<int> nums(4);
    int target;
    for(int i=0;i<4;i++)
    {
        std:: cin>> nums[i];
        std:: cout<<nums[i]<<' ';
    }
    std:: cin>>target;
    Solution abc;
    abc.twoSum(nums,target);
    return 0;
}

///对于array = [1,2,3,4]和target = 6,我期望输出为[1,3]。相反,它不会打印出任何内容

c++ class oop stl
1个回答
0
投票

[您将“输出”混淆为“控制台上打印的内容”,而将“输出”混淆为“函数返回的值”。

main中的abc.twoSum(nums,target);调用returns是一个整数向量。在C和C ++中,返回值可能会被忽略,然后会丢失。

如果要打印某些内容,则必须将函数的返回值存储在变量中或直接使用它,然后实际打印它。

© www.soinside.com 2019 - 2024. All rights reserved.