1

私の例では、印刷したい3つの類似したベクトルがあります。自分自身を繰り返さないように、ベクトルをサブプログラムに転送する方法を理解するのを手伝ってもらえますか?

#include "stdafx.h";
#include <vector>;
#include <iostream>
#include <algorithm>
#include <iterator>

using namespace std;


struct SPoint
{   
    int X;
    int Y;
};

vector<SPoint> points;
vector<SPoint> selected;
vector<SPoint> cleared;

void print_points()
{
    cout << "Points: "<< endl;
    for (int i = 0; i < points.size(); i++)
    {
        cout << '('<<points[i].X <<',' <<points[i].Y <<')'<< endl;
    }
    cout << endl;
}

void print_selected()
{
    cout << "Selected: "<< endl;
    for (int i = 0; i < selected.size(); i++)
    {
        cout << '('<<selected[i].X <<',' <<selected[i].Y <<')'<< endl;      
    }
    cout << endl;
}

void print_cleared()
{
    cout << "Cleared: "<< endl;
    for (int i = 0; i < cleared.size(); i++)
    {
        cout << '('<<cleared[i].X <<',' <<cleared[i].Y <<')'<< endl;        
    }
    cout << endl;
}



int main ()
{
    SPoint temp = {0, 0};

    for (int i = 0; i < 11;i++)
    {
        temp.X = i;
        temp.Y = i;
        points.push_back(temp);

    }

    for (int i = 5; i< 11;i++)
    {
        temp.X = i;
        temp.Y = i;
        points.push_back(temp);
    }

    print_points();
    print_selected();
    print_cleared();

    system ("pause");

  return 0;
}
4

4 に答える 4

1

次のようなことができます。

void
print(const std::vector<SPoint>& vect, const std::string& message)
{
    std::cout << message << ":" << std::endl;
    for (int i = 0, size = vect.size(); i < size; ++i)
        std::cout << vect[i].X << ":" << vector[i].Y << " ";
    std::endl;
}

print(points, "Points");
print(points, "Selected");
print(points, "Cleared");

幸運を

于 2013-01-05T20:59:18.313 に答える
0

ベクトルを引数として関数に渡すには、次のようにします。

void func(const vector<SPoint>& points) {
  ... do stuff
}

次に、次のようにコードで関数を呼び出します。

  ...some stuff
  vector<SPoint> a;
  func(a);
于 2013-01-05T20:57:10.753 に答える
0

ベクトルへの参照を使用constして関数に渡すだけです。

void print(const vector<SPoint> &data) const {

}

...

print(points);
于 2013-01-05T20:57:50.457 に答える
0

完全なC++スタイルのアプローチを次に示します。

struct SPoint
{   
    int X;
    int Y;
};

std::ostream& operator <<( std::ostream& stream, SPoint const& point )
{
    stream << '(' << point.X << ',' <<point.Y << ')';
    return stream;
}

void print_vector( std::ostream& stream, std::vector< SPoint > const& vector )
{
    std::copy(
        points.begin(), points.end()
      , std::ostream_iterator< SPoint >( std::cout, '\n' )
    );
}

その後:

print_vector( std::cout, points );
print_vector( std::cout, selected );
print_vector( std::cout, cleared );
于 2013-01-05T21:00:31.720 に答える