标签: stdvector

为什么这会说“预期”(“成本为整数?”)

例如:

struct Spell 
{
    int id;
    vector<int> cost(4);
};
Run Code Online (Sandbox Code Playgroud)

它说

'Expected parameter declaration'.
Run Code Online (Sandbox Code Playgroud)

另外这段代码有什么区别吗?

if (can(vector <int>inv, spell.cost)) 
{
    cout << "CAST " << spell.id << endl;
    done = true;
    break;
}
Run Code Online (Sandbox Code Playgroud)

这个说

'Expected '(' for function-style cast or type construction'
        
        
Run Code Online (Sandbox Code Playgroud)

有机会可以帮我一下吗?

c++ class declaration stdvector

3
推荐指数
1
解决办法
131
查看次数

获取 std::vector 指针的更好方法

由于&v[0]和v.data()提供了相同的方式来访问 的底层指针std::vector,我想知道哪种方法在稳定性和可移植性方面是更好的选择?

c++ stdvector

3
推荐指数
1
解决办法
252
查看次数

std::vector 的元素是否单独存储在内存中?

问题 :

我尝试打印向量中元素的字节数和内存地址。结果,我看到了一个内存地址和多个字节。向量的元素是单独存储的吗?如果是这样,为什么我的代码显示向量只有 24 个字节?

我尝试过的:

#include <iostream>
#include <vector>

int main(){
    std::vector<const char *> colour = {"Microsoft", "Apple", "DELL", "Accer", "Lenovo", "hp"};
    std::cout << "VectorSize : " << sizeof(colour) << "\n" << std::endl;
    for(int i = 0; i < colour.size(); i++){
        std::cout << colour[i] << " is " << sizeof(colour[i]) << " byte at " << &colour[i] << "." << std::endl;
    }
}
Run Code Online (Sandbox Code Playgroud)

结果 :

VectorSize : 24

Microsoft is 8 byte at 0x27b5a7c6220.
Apple is 8 byte at …
Run Code Online (Sandbox Code Playgroud)

c++ stdvector

3
推荐指数
1
解决办法
225
查看次数

恢复由reserve()分配的内存

让我们

std::vector myVec;
myVec.reserve(10);
Run Code Online (Sandbox Code Playgroud)

如果我只分配了5个元素,我怎样才能重新获得为其他5个元素分配的内存?

c++ stdvector

2
推荐指数
1
解决办法
126
查看次数

为什么sort()不起作用?

我把这个简单的程序读成字符串"13 11 9 10".我想拆分字符串然后对它们进行排序.但是sort()似乎没有用,有什么帮助吗?输入:13 11 9 10,输出:13 11 9 10谢谢!

#include <string>
#include <sstream>
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;

vector<int> split(string s)
{
    istringstream iss(s);
    vector<int> result;

    do{
        string sub;
        iss>>sub;
        if(sub!="")
            result.push_back((int)atoi(sub.c_str()));
    }while(iss);

    return result;
}
int main(void)
{   
    string s;
    while(cin>>s)
    {
        vector<int> vec;
        vec=split(s);
        sort(vec.begin(), vec.end());
        for (int i = 0; i < vec.size(); ++i)
        {
            cout<<vec[i]<<endl;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

c++ stdvector

2
推荐指数
1
解决办法
195
查看次数

调用vector.erase()时出现分段错误

每当我打电话给dominoes.erase()哪种类型的std::vector<Domino>我都会出现分段错误; 即使我硬编码这个值.

一个单独的成员函数调用dominoes.push_back()加载数据,我可以用来pop_back()从向量中删除并返回一个多米诺骨牌,所以我知道那里有数据.我有一个在Domino对象上创建的复制构造函数,并且工作得很好.我把它缩小到了dominoes.erase().

Domino::Domino( const Domino &d ) {
    left = d.getHighPip();
    right = d.getLowPip();

}
Domino DominoCollection::drawDomino( void )
{

    int index = random.nextNumber( dominoes.size()  );
    Domino d( dominoes[index] );
    dominoes.erase( dominoes.begin() + index );

    return Domino( d );
}
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激.谢谢!

c++ std stdvector

2
推荐指数
1
解决办法
1950
查看次数

是什么原因C++没有将`std :: vector <std :: string>`"overload"作为参数添加到`main()`中?

是否有任何根本原因新的C++ 17(或更高版本)将不允许写的另一种方式main为

int main(std::vector<std::string> args){...}
Run Code Online (Sandbox Code Playgroud)

?我知道需要与以前的代码兼容,所以

int main(int, char**) 
Run Code Online (Sandbox Code Playgroud)

仍然必须存在,但是有什么技术可以阻止第一个"替代"声明吗?

c++ program-entry-point stdvector command-line-arguments

2
推荐指数
1
解决办法
142
查看次数

在将另一个实例添加到同一向量后引用的成员变量的引用

请考虑以下代码:

struct Point {
    int x;
    int& xref = x;
};

int main() {
    std::vector<Point> points;
    for (int i = 0; i < 2; i++) {
        Point p;
        p.x = i;
        points.push_back(p);
        assert (points[0].x == points[0].xref);
    }

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

断言在第二次迭代时失败.为什么?

我正在使用GNU C++编译器.我测试的所有标准都会出现问题:

  • C++ 11
  • C++ 14
  • C++ 17
  • GNU ++ 11
  • GNU ++ 14
  • GNU ++ 17

每个元素xref似乎都引用了最后添加的元素x而不是它自己的元素,如下所示:https://pastebin.com/H4wCszxp

c++ reference stdvector

2
推荐指数
1
解决办法
87
查看次数

匿名构造函数和析构函数调用向量中

对下面的程序及其输出有点困惑.

有人可以澄清一下吗?

#include <iostream>
#include <vector>

 using namespace std;
class sample
{
   public:
    int a;
    sample( ){ cout<<" Am in Default Cons "<< a << "\n"; }
    sample( int b ){ a=b; cout<<" Am in Cons "<< a << "\n"; }
    sample(const sample& s){ a=s.a; cout<<" Am in copy " <<s.a<<"\n"; }
    ~sample(){ cout<<" Am in Des "<<a <<"\n"; }

};

int main()
{
    vector < sample > Object;
    {
     Object.push_back(  sample( 1 ));
     Object.push_back(  sample( 2 ));
     cout<<" End …
Run Code Online (Sandbox Code Playgroud)

c++ stdvector

2
推荐指数
1
解决办法
139
查看次数

找到向量的给定索引范围中的最小元素

如何在给定的索引范围内找到最小元素std::vector?

让我们说矢量是

vector<int> v = {1,2,3,4,5};
Run Code Online (Sandbox Code Playgroud)

所以

min_element(v.begin(), v.end());
Run Code Online (Sandbox Code Playgroud)

会给1.

但是如果我们想要从指数1到最小值3呢?

这是 {2,3,4}的v这是2.

c++ algorithm minimum stdvector c++11

2
推荐指数
1
解决办法
161
查看次数