关于类模板问题(求大佬解决)

#include<iostream>
using namespace std;
template <class T = int, class S = int>
class Pair {
public:

    Pair() { }
    Pair(T _first, S _second) : first(_first), second(_second) { }
    void print();

private:
    T first;
    S second;

};
template<class T,class S>
void pair<T, S>::print()//问题1.为什么此处显示上面没有成员print.函数。
{

}

template <class T>

 pair<int,int> search( T* vec, int n, const T &data)//问题2;它不是template<class T,class S>而且pair<int ,int>是什么意思呢?是表示它是属于pair<int,int>类的一个函数,可是函数里也没有声明?

{

pair<int, int>a;

vec = new T[n];

cout << "给数组元素赋值:" << endl;

for (int i = 0; i < n; i++)

cin >>vec[i];

int count = 0;

for (int i = 0; i < n; i++)

{

if (data==vec[i])

{

count++;

if (count==1)

{

a.first = i;

}

else if (count >= 2)

{

a.second = i;

}

}

else if(data!=vec[i])

vec[i] = -1;

 

}

  

cout << "第一次出现的位置为:" << a.first << endl;

if (a.second == a.first)

cout << "最后一次出现的位置和first一样也是:" << a.second << endl;

else

cout << "最后一次出现的位置为:" << a.second << endl;

return a;

}

int main()
{
    

}

你的代码里的小写pair要改成你自己定义的大写P开头的Pair,编译就没问题了。否则编译器以为是std::pair了。如下。

 

 

#include<iostream>
using namespace std;
template <class T = int, class S = int>
class Pair {
public:

    Pair() { }
    Pair(T _first, S _second) : first(_first), second(_second) { }
    void print();

private:
    T first;
    S second;

};
template<class T,class S>
void Pair<T, S>::print()//问题1.为什么此处显示上面没有成员print.函数。
{
}

template <class T>

 Pair<int,int> search( T* vec, int n, const T &data)//问题2;它不是template<class T,class S>而且pair<int ,int>是什么意思呢?是表示它是属于pair<int,int>类的一个函数,可是函数里也没有声明?

{
Pair<int, int>a;

vec = new T[n];

cout << "给数组元素赋值:" << endl;

for (int i = 0; i < n; i++)

cin >>vec[i];

int count = 0;

for (int i = 0; i < n; i++)

{
if (data==vec[i])

{
count++;

if (count==1)

{
a.first = i;

}

else if (count >= 2)

{
a.second = i;

}

}

else if(data!=vec[i])

vec[i] = -1;

 

}

  

cout << "第一次出现的位置为:" << a.first << endl;

if (a.second == a.first)

cout << "最后一次出现的位置和first一样也是:" << a.second << endl;

else

cout << "最后一次出现的位置为:" << a.second << endl;

return a;

}

int main()
{
    

}

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632