标签: stdvector

使用向量返回std :: string

我试图让"CMtoaPlugin :: listArnoldNodes()"返回一个字符串的"数组"

   std::vector<std::string> ArnoldNodes = CMtoaPlugin::listArnoldNodes();
   std::vector<std::string>::iterator it;

   for ( it=ArnoldNodes.begin() ; it < ArnoldNodes.end(); it++ )
   {
      printf("initialize shader %s\n", *it);
   }
Run Code Online (Sandbox Code Playgroud)

但这是我得到的,2个条目,这是正确的,但条目的内容不是

初始化Arnold着色器†¡

初始化阿诺德着色器.

我究竟做错了什么

c++ iteration stdstring stdvector

0
推荐指数
2
解决办法
862
查看次数

std :: vector <unsigned short>以某种方式包含数字> 300?

我有一个std::vector<unsigned short>不知何故包含大于300的数字.

unsigned short 通常只允许0到255,程序中没有任何地方尝试添加大而且可能尝试失败的数字.

怎么会发生这种情况?

编辑:对不起,这不是一个有用的问题,似乎我的usigned short范围错了.

c++ stdvector

0
推荐指数
1
解决办法
480
查看次数

当以多态方式使用时,派生类的std :: vector成员的复制赋值会导致内存泄漏

在下面的代码中我想input vector<double>derived类中存储一个.我通过应用std::vector作为向量的副本赋值传递给setIT函数.我需要它来使用在派生中实现的计算.在此复制分配期间出现内存泄漏.

使用以下内容可以避免这种泄漏:vector<double> * input代替vector<double> input,但我不明白为什么.

任何人都可以澄清这个吗?提前致谢.

#include "utilities.h"
#include <fstream>

using namespace std;
using namespace astro;

class base
{
  public:
    base () { cout<<" in base default constructor "<<endl; }
    virtual void setIT (void *v) = 0;
    virtual double compute () = 0;
};

class derived : public base
{
  protected:
    vector<double> input;

  public:
    derived ();
    virtual void setIT (void *v);
    virtual double compute () { /* …
Run Code Online (Sandbox Code Playgroud)

c++ polymorphism inheritance stdvector

0
推荐指数
1
解决办法
336
查看次数

检查结构是否在向量中

我有一个结构矢量.我需要检查结构是否在向量中.整个结构,而不是任何特定的成员.它在编译时抛出了这个错误:

binary '==' : no operator found which takes a left-hand operand of type 'NavigationNode'
(or there is no acceptable conversion)
Run Code Online (Sandbox Code Playgroud)

我的结构:

 struct NavigationNode{ 
    int x, y; //their x and y position on the grid
    float f, g, h;
    int parentGCost;
    int value;
};

NavigationNode currentNode;
Run Code Online (Sandbox Code Playgroud)

矢量

vector<NavigationNode> openList;
Run Code Online (Sandbox Code Playgroud)

我的发现:

 if (find(closedList.begin(), closedList.end(), currentNode) == closedList.end() )
 {
 }
Run Code Online (Sandbox Code Playgroud)

c++ struct stdvector

0
推荐指数
1
解决办法
95
查看次数

如何根据c +值的比例对c ++中的向量进行排序

我有一个向量,它的元素由两个整数组成.我想先计算每个元素的这2个整数的比率,然后根据这个比率对向量进行排序.

c++ sorting stdvector

0
推荐指数
1
解决办法
526
查看次数

为什么我可以在调整大小后仍然访问矢量数据?

以下代码不会引发错误:

int main()
{
typedef std::vector<int> intstack;

intstack mystack;

mystack.push_back(7);
mystack.push_back(8);
mystack.push_back(9);

mystack.pop_back();
std::cout << mystack.size(); //prints 2
std::cout << mystack[2]; // prints 9
return 0;
}
Run Code Online (Sandbox Code Playgroud)

我原以为该行std::cout << mystack[2]会引发错误,因为该pop_back操作已调整了向量.为什么数据仍可访问?是因为底层数组中的数据仍然存在而且向量pop_back操作只修改了迭代器吗?

c++ vector stdvector

0
推荐指数
1
解决办法
85
查看次数

向量<T>的内存结构

我正在玩c ++中的向量,我试图弄清楚向量在内存中的表现......

我做了这样的矢量:vector<int> numbers = { 1, 2, 3, 4, 5, 6 };并提取了一些关于矢量的信息


&numbers:002EF8B8

begin()._Ptr:0031A538

end()._Ptr:0031A550


向量存储单元002EF8B8的数据:

00 9d 31 00 38 a5 31 00 50 a531 00 50 a5 31 00 cc cc cc cc 30 31 82 1f

找到begin()._Ptrend()._Ptr存储在那里的地址......


和地址范围内的整数:

内存位置的第1个int:0031A538 = 01 00 00 00

内存位置的第二个int:0031A53C = 02 00 00 00

内存位置的第3个int:0031A540 = 03 00 00 00

内存位置的第4个int:0031A544 = 04 00 00 00

内存位置的第5个int:0031A548 = 05 00 …

c++ memory stdvector

0
推荐指数
1
解决办法
593
查看次数

访问unique_ptr向量的迭代器的成员

我有一个矢量:

std::vector<std::unique_ptr<MyAbstract>> myList;
Run Code Online (Sandbox Code Playgroud)

我想在循环中访问成员"id"并删除特定项目:

for (auto it = myList.begin(); it != myList.end();)
{
    if (it->id == 2)
    {
        it = myList.erase(it);
        break;
    }
    else
        ++it;
}
Run Code Online (Sandbox Code Playgroud)

这条线......

if (it->id == 2)
Run Code Online (Sandbox Code Playgroud)

给我一个错误:

'class std :: unique_ptr'没有名为'id'的成员

这似乎有效:

if (it->get()->id == 2)
Run Code Online (Sandbox Code Playgroud)

我想知道为什么?!这是完整的代码:http: //ideone.com/kFohfA

c++ stdvector unique-ptr c++11

0
推荐指数
1
解决办法
658
查看次数

如何在c ++中打印出嵌套向量的内容?

以下是有疑问的片段:

typedef std::vector<unsigned char> QInput; // defined in an external library

std::vector<QInput> extvec; // defined in a separate function
Run Code Online (Sandbox Code Playgroud)

问题1:extvec嵌套向量吗?

问题2:如何打印出内容extvec

我已经尝试extvec使用StackOverflow的许多答案中描述的传统方法打印出内容,但是我遇到了很多错误.所以我决定这可能是一个嵌套的向量.但的形式看起来像来自其他问题不同.

c++ vector stdvector

0
推荐指数
1
解决办法
114
查看次数

如何在不增加向量大小的情况下保留多维向量?

我有N乘以4的数据,如下所示将数据推回去。

vector<vector<int>> a;
for(some loop){
   ...
   a.push_back(vector<int>(4){val1,val2,val3,val4});
}
Run Code Online (Sandbox Code Playgroud)

N小于13000。为防止不必要的重新分配,我想提前4个空间保留13000。

在阅读了有关该主题的多个相关文章(例如,如何保留多维向量?)之后,我知道以下将完成工作。但是我想使用reserve()或任何类似的函数(如果有)来使用它push_back()

vector<vector<int>> a(13000,vector<int>(4);
Run Code Online (Sandbox Code Playgroud)

要么

vector<vector<int>> a;
a.resize(13000,vector<int>(4));
Run Code Online (Sandbox Code Playgroud)

如何仅保留内存而不增加向量大小?

c++ stdvector multidimensional-array c++11

0
推荐指数
2
解决办法
84
查看次数