类 std::vector<...> 没有命名的成员
class std::vector<...> has no member named
我对C++很陌生,我正在尝试使用结构向量,但当我试图编译代码时,我总是得到"classstd::vector'没有名为'p'的成员"。这就是它,顺便说一句:
#include <vector>
#include <cstdlib>
#include <stdio.h>
#include <algorithm>
using namespace std;
struct animal {
int p;
int v;
};
bool cmpp (animal a, animal b) {
return (a.p < b.p);
}
bool cmpv (animal a, animal b) {
return (a.v < b.v);
}
bool cmpc (pair<animal, animal> a, pair<animal, animal> b) {
return (a.first.p < b.first.p);
}
int main(){
int c, s;
while(scanf("%d %d", &c, &s) != EOF){
vector<animal> masses[2*c];
vector<pair<animal, animal> > chamber;
for (int i = 0; i < 2*c-s; i++){
masses[i].v = 0;
masses[i].p = -1;
}
for (int i = 2*c-s; i < 2*c; i++){
masses[i].v << cin;
masses[i].p << i - 2*c-s;
}
sort(masses.begin(), masses.end(), cmpv);
for(int i = 0; i < c; i++){
if(chamber[i].p < masses[2*c-i] && chamber[i].p != -1)
chamber[i] = pair<animal, animal> (masses[i], masses[2*c-i]);
else
chamber[i] = pair<animal, animal> (masses[2*c-i], masses[i]);
}
sort(chamber.begin(), chamber.end(), cmpc);
for(int i = 0; i < c; i++){
printf("%d %d", chamber[i].first.v, chamber[i].second.v)
}
}
return 0;
}
代码中可能还有其他错误,但我现在只想知道向量的事情。附言:这是我在这里的第一个问题:)我就知道这一天会到来!
由于某种原因,您有一个向量数组。
vector<animal> masses[2*c];
应该是
vector<animal> masses(2*c);
以下是定义和初始化矢量的方法:
vector<T> v;//empty
vector<T> v1(v2);//v1 is a copy of v2
vector<T> v1 = v2;
vector<T> v1{a, b, c};//list initialize
vector<T> v1 = {a, b, c};
vector<T> v(b, e);// v is a copy of the elements in the range denoted by iterators b and e
vector<T> v(n);//v has n value-initialized elements
vector<T> v(n, t);// v has n elements with value t
所以,你的定义并没有达到你想要的效果,
vector<animal> masses[2*c]; //masses is an array of vector<animal>
当你说mass[i]是一个向量而不是动物,没有名为"p"的成员
你应该写:
vector<animal> masses(2*c);
相关文章:
- std::ofstream 作为类成员删除复制构造函数?
- 使用 std::index_sequence 初始化具有固定大小数组成员的 POD 结构容器
- std::to_string - 'to_string' 不是 'std' 的成员 - Visual Studio Code 1.42.0
- 使用 std::async 时死锁,将来作为成员
- 访问 std:vector 的类成员 std:vector 在一个类中与另一个 std:vector
- 将此类的智能指针追加到成员 std::vector
- 在Visual Studio中删除成员std::vector::d ata()
- C++初始化/填充静态成员 std::数组元素到特定值
- 是否可以在同一对象中对成员 std::shared_ptr 进行成员引用<variable>?
- 成员std::future防止boost::shared_ptr超出范围
- 在GCC中使用Brace Initializer初始化成员STD ::数组时错误
- 错误:非静态引用成员"std::ostream&Student::out",无法使用默认赋值运算符
- 获取指向成员std::string::size的指针无法与libc++链接,但可以与libstdc++一起使用
- 如何创建静态常量成员 std::string 数组
- 如何在构造函数初始值设定项列表中初始化“std::unique_ptr”对象的类成员“std::vector”
- C++ 编译失败,并显示错误:命名空间中没有名为 'snprintf' 的成员'std'
- 重载类下标运算符以访问成员std::vector对象的元素
- 构造类成员 std::vector<std::unique_ptr > 的智能方法<AClass>
- 使用成员std::vector移动语义
- 初始化类成员std::函数时编译错误