>source

검색 기능에 다음과 같은 문제가 있습니다. 3 개의 매개 변수가 필요하고 그 중 하나가 const rational_t ​​* v와 같습니다. v 해당 매개 변수를 통해 벡터를 전달하고 싶지만 작동하지 않는 것 같습니다.

코드 :

#include <iostream>
#include <cmath>
#include <vector>
#include "rational_t.hpp"
using namespace std;
bool search(const rational_t* v, const int n, const rational_t& x)
{
    for(int i = 0; i < n; i++) {
        if(v[i].value() == x.value()) {
            return true;
        } else {
            return false;
        }
    }
};
int main()
{
    rational_t a(1, 2), b(3), c, d(1, 2);
    vector<rational_t> v;
    v.push_back(a);
    v.push_back(b);
    v.push_back(c);
    cout << "a.value()= " << a.value() << endl;
    cout << "b.value()= " << b.value() << endl;
    cout << "c.value()= " << c.value() << endl;
    cout << search(v, v.size(), d); // Problem here
    return 0;
}

나는 또한 cout을 시도했다<

어떤 아이디어? 감사합니다.

클래스 :

#pragma once
#include <iostream>
#include <cassert>
#include <cmath>
#define EPSILON 1e-6
using namespace std;
class rational_t
{
  int num_, den_;
public:
  rational_t(const int = 0, const int = 1);
  ~rational_t() {}
  int get_num() const
  {
    return num_;
  }
  int get_den() const
  {
    return den_;
  }
  void set_num(const int n)
  {
    num_ = n;
  }
  void set_den(const int d)
  {
    assert(d != 0), den_ = d;
  }
  double value(void) const;
  rational_t opposite(void) const;
  rational_t reciprocal(void) const;
  bool equal(const rational_t &r, const double precision = EPSILON) const;
  bool greater(const rational_t &r, const double precision = EPSILON) 
const;
  bool less(const rational_t &r, const double precision = EPSILON) const;
  bool cero_equal(const double precision) const;
  void write(ostream &os = cout) const;
  void read(istream &is = cin);
};


  • 답변 # 1

    search 의 첫 번째 주장   rational_t* 여야합니다  하지만 당신은 vector<rational_t> 를 전달 .

    원한다

    search(v.data(), v.size(), d)
    
    

    대신

    search(v, v.size(), d)
    
    
    <시간>

    그러나 나는 이것을 더 깨끗한 IMO로 작성합니다 :

    bool search(vector<rational_t> & v, const rational_t& x)
    {
      for (int i = 0; i < v.size(); i++) {
        if (v[i].value() == x.value()) {
          return true;
        }
        else {
          return false;
        }
      }
    }
    ...
    cout << search(v, d);
    
    

  • 이전 docker - 비밀 대안이있는 Kubernetes
  • 다음 button - 자바 스크립트 onclick이 휴대 기기에서 작동하지 않습니다