由买买提看人间百态

topics

全部话题 - 话题: vec
首页 上页 1 2 3 4 下页 末页 (共4页)
w****x
发帖数: 2483
1
来自主题: JobHunting版 - 一道题
这题真TM坑爹啊~~
class node
{
int id;
int value;
int sum;
void send(int toId, int value);
int receive(int fromId);
void run()
{
int tmp = x;
int nLev = 0;
vector vec;
while (tmp%2 == 0)
{
int nRecv = x - (1 << nLev);
sum += receive(nRecv);
vec.push_back(nRecv);
nLev++;
}
if (id != n)
{
int nSend = min(id + (1 << nLev), n);
send(nSend, sum);
sum = receive(nSend);
}
else
... 阅读全帖
w****x
发帖数: 2483
2
来自主题: JobHunting版 - 一道题
这题真TM坑爹啊~~
class node
{
int id;
int value;
int sum;
void send(int toId, int value);
int receive(int fromId);
void run()
{
int tmp = x;
int nLev = 0;
vector vec;
while (tmp%2 == 0)
{
int nRecv = x - (1 << nLev);
sum += receive(nRecv);
vec.push_back(nRecv);
nLev++;
}
if (id != n)
{
int nSend = min(id + (1 << nLev), n);
send(nSend, sum);
sum = receive(nSend);
}
else
... 阅读全帖
w****x
发帖数: 2483
3
/*
Serialize/DeSerialize a tree
*/
struct NODE
{
int nVal;
vector vec;
NODE(int n) : nVal(n) {}
};
void _inner_serial(NODE* pNode, char*& p)
{
if (NULL == pNode)
return;
*p++ = pNode->vec.size();
*p++ = pNode->nVal;
for (vector::iterator it = pNode->vec.begin();
it != pNode->vec.end(); it++)
_inner_serial(*it, p);
}
const char* Serialize(NODE* pRoot, char mem[])
{
if (NULL == mem || NULL == pRoot)
return NULL;
char... 阅读全帖
w****x
发帖数: 2483
4
/*
Serialize/DeSerialize a tree
*/
struct NODE
{
int nVal;
vector vec;
NODE(int n) : nVal(n) {}
};
void _inner_serial(NODE* pNode, char*& p)
{
if (NULL == pNode)
return;
*p++ = pNode->vec.size();
*p++ = pNode->nVal;
for (vector::iterator it = pNode->vec.begin();
it != pNode->vec.end(); it++)
_inner_serial(*it, p);
}
const char* Serialize(NODE* pRoot, char mem[])
{
if (NULL == mem || NULL == pRoot)
return NULL;
char... 阅读全帖
r*********n
发帖数: 4553
5
看了下wiki,貌似比较好的方法是先产生permutation(行,列就已经满足了),然后再
检查对角线是否collide.
vector vec({0,.....,7})
do{
if(checkdiagonal(vec)) return vec;
}while{next_permutation(vec.begin(), vec.end())}
wiki上面说上面的方法还可以优化:用partial permutation,但是我没看明白。
p****n
发帖数: 69
6
http://en.cppreference.com/w/cpp/container/priority_queue
default确实是vector
pq.push is equivalent to vec.push_back,then call ascend method to put it in
the correct position
for pq.erase, first swap vec.front() and vec.back(), then erase vec.back()
and call descend method to put vec.front() to the correct position.
v******9
发帖数: 1
7
来自主题: JobHunting版 - 请教一个OOP的C++问题
可以不需要typeid,不过就比较奇怪一点。
tester.h
================
class A{
public:
virtual void invoke();
};
class B:public A{
public:
void virtual invoke();
};
class C:public A{
public:
void invoke();
};
class D:public A{
public:
void invoke();
};
=====================
main.cpp
=====================
#include
#include
#include "tester.h"
using namespace std;
void test(A* a){
cout<<"test: A "< };
void test(B* a){
cout<<"test: B "< };
void test(C* a){
co... 阅读全帖
p***o
发帖数: 1252
8
来自主题: Programming版 - C++编程问题:union inside struct
how about this?
struct xxx {double x, y, z;};
union
{
double xa[3];
xxx v;
};
however, you need to use vec.v.x, vec.v.y, vec.v.z
if you insist on vec.x, vec.y, vex.z, probably #define
could be used, just as sockaddr_in
G********7
发帖数: 256
9
来自主题: Programming版 - 包含指针的类和vector的问题
我有一个类,里面包含一个指针,大致如下
class A
{
int a;
int* buf;
A(){a=0;buf=0}; // default constructor
A(const A& in){ // copy constructor
a=in.a;
buf=new int[a];
memcpy(buf,in.buf,sizeof(int)*a);
};

~A(){ if(buf!=0) delete[] buf;}; // destructor
};
程序里面定义了一个vector vec,然后我试图向里面insert一个object,如下
vector
vec;
vec.insert(vec.begin(),obj_A); // obj_A is an object of class A
这时候就出问题了。我debug的时候发现,vector的insert函数是先给obj_A复制一个
copy,叫做obj_A_copy,然后把obj_A_copy赋值给vec[0]。当退出insert函数时,
obj_
d*******h
发帖数: 642
10
来自主题: Programming版 - 请教一个boost::bind的问题
class A
{
double d_x1, d_x2;
vector vec;
bool Compare(double x1, double x2) const { return (d_x1==x1 && d_x2==x2);}
public:
A* Find(double x1, double x2) const
{
vector::iterator itor;
itor = find_if(vec.begin(), vec.end(), boost::bind(&A::Compare, _1, _2)(x1, x2)); // 这里编译不通过
return (*itor);
}
};
我想在Find函数里面实现的是:
for(vector::iterator itor=vec.begin();itor!=vec.end();++itor)
{
if ((*itor)->Compare(double x1, double x2))
{
s*****n
发帖数: 2174
11
用我之前说的第一个方法就可以啊. 第二个方法和第一个方法的不同, 是对于顺序的保
留. 第一种方法给出的index是保序的, 第二个方法给出的index是无序的. 这有点像排
列和组合的区别, 看你具体要哪种了.
> vec1 <- c(1, 5, 7, 9, 12, 3)
> vec2 <- c(9, 8, 7)
> vec <- intersect(vec1, vec2)
> index1 <- 1:length(vec1)
> names(index1) <- vec1
> index1[as.character(vec)]
7 9
3 4
> index2 <- 1:length(vec2)
> names(index2) <- vec2
> index2[as.character(vec)]
7 9
3 1
> vec1[index1[as.character(vec)]]
[1] 7 9
> vec2[index2[as.character(vec)]]
[1] 7 9
g*****x
发帖数: 799
12
来自主题: JobHunting版 - Amazon 面经
// DP: f(n-1) = max{f(i)}, where i from n to n-1+a[n-1] and i bool maze(const vector &vec)
{
if(vec.size() < 2)
return true;
vector reach(vec.size(), false); // reachability of the nth pos to
the last pos
reach[reach.size() - 1] = true; // last position is always reachable to
itself
for(int i = reach.size() - 2; i >= 0; --i)
{
for(int j = i + 1; j <= i + vec[i] && j < reach.size(); ++j)
if(reach[j] == true)
{
... 阅读全帖
g*****x
发帖数: 799
13
来自主题: JobHunting版 - Amazon 面经
// DP: f(n-1) = max{f(i)}, where i from n to n-1+a[n-1] and i bool maze(const vector &vec)
{
if(vec.size() < 2)
return true;
vector reach(vec.size(), false); // reachability of the nth pos to
the last pos
reach[reach.size() - 1] = true; // last position is always reachable to
itself
for(int i = reach.size() - 2; i >= 0; --i)
{
for(int j = i + 1; j <= i + vec[i] && j < reach.size(); ++j)
if(reach[j] == true)
{
... 阅读全帖
l*****a
发帖数: 14598
14
来自主题: JobHunting版 - 找硬币的经典问题
sort the array at first.
void GetCombination(int a[],int size,int target,int
start,vector&vec)
{
if(target==0) { print; return;}
for(int i=start;i {
if(a[i]>target) return;
vec.pusk_back(a[i]);
GetCombination(a,size,target-a[i],i,vec);
vec.pop_back();
}
}
l*****a
发帖数: 14598
15
来自主题: JobHunting版 - 求教硬币组合问题
void GetCombination(int array[],int size,int target,int start,int* counter,
vector&vec)
{
if(target==0) { *counter++; return; }
for(int i=start;i {
if(array[i]>target) break;
vec.push_back(array[i]);
GetCombination(array,size,target-array[i],i,counter,vec);
vec.pop_back();
}
}
l*****a
发帖数: 14598
16
来自主题: JobHunting版 - 这题也可以DP 解吧?
不会DP
就用求组合的常规办法吧
qsort(a,0,size-1);
void getCombination(int a[],int size,int target,int start,vector&vec)
{
if(target==0) { ... return;}
for(int i=start;i {
if(a[i] vec.push_back(a[i]);
if(i vec.pop_back();
}
}
p*****2
发帖数: 21240
17
来自主题: JobHunting版 - 这道题怎么做的?
(defn f [l r v vec] (concat (take l vec) (map #(+ % v) (subvec vec l (inc r)
)) (nthrest vec (inc r))))
y*****i
发帖数: 141
18
来自主题: JobHunting版 - 问道G家的题
照着Maxthon的编码解法写了一个:
#include
#include
#include
#include
using namespace std;
bool bool_vec_none(const vector & vec) {
for(auto elem : vec) {
if (elem) {
return false;
}
}
return true;
}
bool bool_vec_all(const vector & vec) {
for(auto elem : vec) {
if (!elem) {
return false;
}
}
return true;
}
string word_abbreviation(string target, vector dict)
{
if (t... 阅读全帖
s***e
发帖数: 122
19
来自主题: Programming版 - C++编程问题:union inside struct
楼主这个说要union也是让我百思不得其解,不过洗个澡出来发现了另外一个好办法,
就是用引用:)
#include
class vec {
public:
double xa[3];
double & x;
double & y;
double & z;
public:
vec() : x(xa[0]), y(xa[1]), z(xa[2]) {}
~vec() {}
};
void main() {
vec v;
v.x = 1;
v.y = 2;
v.z = 3;
printf("%f, %f, %f\n", v.xa[0], v.xa[1], v.xa[2]);
}
w******g
发帖数: 67
20
来自主题: Programming版 - C++ template problem
I have a simple C++template code, but I cannot get it run.
In DataTemplate.h:
template
ElemType* getVecElemPointer(int index, vector& vec);
In DataTemplate.cpp:
template
ElemType* getVecElemPointer(int index, vector& vec)
{
if( (index0) )
{
return &vec[index];
}
return (ElemType*) 0;
}
It is fine when I compile it: "g++ -c -g DataTemplate.cpp"
In another class implementation file: test.cpp
#inclu
m******s
发帖数: 204
21
来自主题: Programming版 - 请教关于link error (C++)的基本问题
用的是VS 2008。我想将代码分成几个文件:
1。vec.h
#ifndef _VEC_H_
#define _VEC_H_
class vec3{
float dist(vec3 &v)
};
2. vec.pp
#include "vec.h"
// Implement dist function
float vec3::dist(vec3 &v)
3. main.cpp
#include "vec.h"
void f()
{
vec3 v1(1,1,1);
vec3 v2(1,1,1);
float len = v1.dist(v2);
}
这三个文件在同一个project里面,但仍然得到linkerror 2019,dist unresolved...
没google到有用的解释,请大家旁忙看看,多谢!
S*******s
发帖数: 13043
22
来自主题: Programming版 - 数八皇后解法数目:python只要9行
from itertools import permutations
n = 8
cols = range(n)
for vec in permutations(cols):
if (n == len(set(vec[i]+i for i in cols))
== len(set(vec[i]-i for i in cols))):
print vec
y**b
发帖数: 10166
23
来自主题: Programming版 - 请问释放容器内存的方法
std::vector vec;
vec.resize(10000000,-1);
vec.clear(); //并不真正释放内存
std::vector().swap(vec);//通常用来释放内存的trick
试验了一下,swap能彻底释放内存;可是这个方法对unordered_set只能释放部分内存:
std::unordered_set uos;
for (int i = 0; i < 10000000; ++i)
uos.insert(i);
uos.clear(); //并不真正释放内存
std::unordered_set().swap(uos); //大约释放1/3内存
换成boost::unordered_set也是同样结果。请问有没有什么办法能释放得彻底一些?
y**b
发帖数: 10166
24
来自主题: Programming版 - 请问释放容器内存的方法
linux下面我直接用ps或top命令查看的,可以清楚看到各个进程的内存消耗。
swap这个方法我用google搜索到的,似乎是通用的一个trick; effective stl里面也有
提到。
下面是源码,只有swap之后进程的内存消耗才降到近乎0(getchar的时候察看)。
#include
#include
#include
int main () {
std::vector vec;
vec.resize(10000000,-1);
std::cout << "resize finished." << std::endl;
getchar();
vec.clear();
std::cout << "clear finished." << std::endl;
getchar();
std::vector().swap(vec);
std::cout << "swap finished." << std::endl;
getchar();
ret... 阅读全帖
n********r
发帖数: 719
25
code是这样的
void func() {
vector > result;
for(int i=0; i
......
std::vector vec(M);
for (int j=0; j vec[j] = tmp[j];
result.push_back(vec);
......
}
}
设置断点debug发现, 在第一次result.push_back(vec)之后
result的size由0变为1
但是result[0]是一个empty的vector
第二次push_back的时候程序就crash了
哪里出问题了呢?
y****n
发帖数: 15
26
来自主题: Programming版 - 请教一个关于std::function的问题
请大牛们帮忙看看这段代码,在编译的时候会有如下error message 请问如何能编译通
过啊?跪谢!
当然这只是个虚构的例子,主要是想在template存在的情况下,传递一个member
function的指针给另一个member function.
test1.cpp: In member function 'void Foo::testInt()':
test1.cpp:30:61: error: no matching function for call to 'Foo::processVector
(std::vector&, std::_Bind_helper std::_Placeholder<1>&>::type)'
processVector(arr, std::bind(&Foo::print, this, _1));
^
test1.c... 阅读全帖
A***C
发帖数: 143
27
来自主题: Mathematics版 - 请教大家一个矩阵的问题
Qij = vec(Ai)^T B^T \x B vec(Aj)
When B^T \x B is positive semi-definite,
Q is positive semi-definite,
you can further determine when Q is full rank to see
when Q is positive definite,
\x is the Kronecker product here.
You can use the matrix vectorization
http://en.wikipedia.org/wiki/Vectorization_(mathematics)
and make use of
Tr AiBAjB = = vec(Ai)^T vec(BAjB)
to obtain my conclusion
o****o
发帖数: 8077
28
来自主题: Statistics版 - R 有点令人失望
here is a SAS questions someone asked:
Given a symmetric matrix A (NxN), the value of each cell is some integer
number, for each row (with row ID=1 to N), he wants to count which other
rows in A contains a number equals to the row ID.
For example, for row=4, this guy wants to find out in row [-4,:], which ones
also contains a value=4 in their rows [, 1:N].
In SAS, typically you will transpose it to a vector, and output only those
rows=ID. Or you can sweep each row from diagonal term to the end a... 阅读全帖
f*********5
发帖数: 576
29
来自主题: JobHunting版 - Amazon电面问题求大牛解答
find the combination of items in input[] with the sum of tartget.
static int count=0;
quicksort(input,0,size-1);
void GetCombinationNumber(int input[],int used[],vector&vec,int
size,int target,int *count)
{
if (target==0) { *count++; return; }
for(int i=0;i {
if (used[i]==1)continue; //we donot want to use them
repeatedly
if ((vec.size()>0)&&(vec.back()>a[i])) continue; //we will use
the items in
order so that we can avoid duplicate
if (t
i**********e
发帖数: 1145
30
来自主题: JobHunting版 - 请问一道很难的面试题
刚想到很精简的 code,不需要用 post-fix stack-based expression,直接储存进一
个 string 数组即可。
效率应该是不错的了,有一些方面可以考虑提高效率,例如用 vector 需要删除元素可
能会慢些,但 vector 里的元素很少,应该影响不大。
还有一点就是每次传递归的时候,都需要把所有的数组重新 copy 一次。这是无可避免
的,因为每次进入下一层递归时必须传 copy,不能在原有数组中更改。
#include
#include
#include
#include
#include
using namespace std;
void generate(vector A, int target, int s, vector expression);
template
void eraseAt(vector &vec, int i) {
typename vector::iterator ... 阅读全帖
w****x
发帖数: 2483
31
来自主题: JobHunting版 - FB电面求分析 (转载)
面试官第二题的考点是什么???
如果是RPC: bool GetIndex(int x, int y),
这个RPC是由比如master机器映射到不同机器上读取数据, 主要问题是Map太大了不能放
到一台机器上??
如果考分布式计算那么每台计算机计算一个block, 给每个block的端口编号, 每个编号
不同从 1...n, 然后计算所有两两之间的通路, 然后再把block连起来??
如果是这样的话既然不同block的端口不一样, 那么知道端口号也知道了block号, 也知
道这两点间怎么走.
把所有的端口到端口的pair混在一起来做一个3元组PORT_PATH:
1. 根据start point 和 end point 找到最近的端口ptBeg & ptEnd, 问题就是在<
port1, port2, path>这一堆3元组中找到通路让ptBeg ..... --> ptEnd
2. bool FindPath(int ptBeg, int ptEnd, map> mp, bRec[
n])
... 阅读全帖
y********a
发帖数: 18
32
来自主题: JobHunting版 - 求教:这个程序为什么不能编译?
#include
#include
#include
#include
using namespace std;
template
void printvec( vector vec ) {
cout << "begin--------------------" << endl;
for ( vector::const_iterator it = vec.begin(); it != vec.end();
it++ ) {
cout << setw(10) << *it << endl;
}
cout << "----------------------end" << endl;
}
int main() {
vector vec1;
for ( int ii = 0; ii < 10; ii++ ) {
vec1.push_back( ii );
... 阅读全帖
o***d
发帖数: 313
33
来自主题: JobHunting版 - 问个STL的 list和 vector的问题
vector.insert(vec.end()) if vec.size() ???
t****a
发帖数: 1212
34
来自主题: JobHunting版 - leetcode 129
楼主说的这题实际上是第127题
刚做了个clojure的解法,比java要短小很多。
可惜不能在leetcode上测试大数据,真心希望leetcode支持C/C++/Java以外的语言。
(defn word-map [dict]
(let [g (group-by first (for [word1 dict
word2 dict
:let [wd (word-dist word1 word2)]
:when (== wd 1)]
[word1 word2]))
ks (keys g)
vs (map (partial mapv second) (vals g))]
(zipmap ks vs)))
(defn word-dist [word1 word2]
(reduce + (map (f... 阅读全帖
f********a
发帖数: 165
35
来自主题: JobHunting版 - 最近很hot startup一题
大概意思是有3个门,1个后面是prize,2个后面是goat, contestant选择一个门,然后
host在剩下的两个门选择一个goat门打开,然后contestant可以选择switch门,问题是
实现一个function:
bool play_game(bool contestant_will_switch_doors)
输入是true就是换门,false就是不换门,return是true就是最后选择到了prize那个,
false就是选择到了goat那个。很纠结 这个换门不换门其实最后都是50%的几率拿到
prize。这是我的实现,没能做完。哪位能否实现这个function以及整个游戏。
enum Door
{
goat,
prize
};
class Game
{
private:
vector vec;
int m_size;
public:
Game(int size){
m_size = size;
srand(time(NULL));
int ran = rand() % m... 阅读全帖
f********a
发帖数: 165
36
来自主题: JobHunting版 - 最近很hot startup一题
大概意思是有3个门,1个后面是prize,2个后面是goat, contestant选择一个门,然后
host在剩下的两个门选择一个goat门打开,然后contestant可以选择switch门,问题是
实现一个function:
bool play_game(bool contestant_will_switch_doors)
输入是true就是换门,false就是不换门,return是true就是最后选择到了prize那个,
false就是选择到了goat那个。很纠结 这个换门不换门其实最后都是50%的几率拿到
prize。这是我的实现,没能做完。哪位能否实现这个function以及整个游戏。
enum Door
{
goat,
prize
};
class Game
{
private:
vector vec;
int m_size;
public:
Game(int size){
m_size = size;
srand(time(NULL));
int ran = rand() % m... 阅读全帖
h*******e
发帖数: 1377
37
class Solution {
public:
vector > permuteUnique(vector &num) {
vector > vec;
sort(num.begin(), num.end());
do
{ vec.push_back(num);
}while(next_permutation(num.begin(), num.end()));
return vec;
}
};
昨天写的 I/II 都好用.
f**********t
发帖数: 1001
38
最近在练习用Tree Iterator实现Tree的非递归遍历。想练习一下begin()/end()/++的
版本。code如下:
结果在operator !=那里出了问题:
Line 45: passing ‘const TreeIterator’ as ‘this’ argument of ‘TreeNode*
TreeIterator::getRoot()’ discards qualifiers [-fpermissive]
求教这个怎么fix? 多谢啦 =)
/**
* Definition for binary tree
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class TreeIterator {
stack s;
TreeNode *root_;
public:
TreeN... 阅读全帖
t*****a
发帖数: 106
39
常年用C++,看到两道题要实现iterator
1. class flatten implements iterator{
public flatten(vector> a);
boolean hasNext();
iterator next();
}
2. "Program an iterator for a List which may include nodes or List i.e. *
{0,
{1,2}, 3 ,{4,{5, 6}}} Iterator returns 0 - 1 - 2 - 3 - 4 - 5 - 6"
第一题C++可以实现,第二题除非自己定义node structure,否则感觉无解。主要是C++
里的iterator不能赋NULL,看结束也不能用"iterator==NULL"来判断,得专门维持
collection结束的标识。感觉这种题是专
门给Java的人出的,C++没法搞,起码不能用已有的STL搞,非常坑人。不知道大家有什
么建议。
第一题的C++实现。
class Iterator
{
private:... 阅读全帖
c*****t
发帖数: 1879
40
来自主题: Java版 - 问一道关于Vector的题
For vector, you can just do
for (int i = 0; i < vec.size ();)
{
if (((A)vec.get (i)).b == 5)
vec.remove (i);
else
++i;
}
However, it is not as efficient as getting the ones that do not match,
and then set it back.

iterator
c*****t
发帖数: 1879
41
来自主题: Java版 - 问一道关于Vector的题

That's not a good approach, because of repeated calling of hashCode () and
lookup of the object in the
hashset which is slow. A better approach is:
final int size = vec.size ();
Vector newVec = new Vector (size);
for (int i = 0; i < size; ++i)
{
A a = (A)vec.get (i); // very fast op due to direct array retrieval
if (a.b != 5) // or whatever filter that indicates keeping the element
newVec.add (a); // very fast op since we have all the capacity set
}
vec.clear (); // very fast op,
q***s
发帖数: 2243
42
来自主题: Programming版 - 还请教一个关于C++的问题
做一个程序,一个父类(A),下面有几个子类(比如B),所有子类的实例都放在一个
vector的集合中,集合中的对象当然都是父类型的了。但是我发现问题,如果从集合中
取出实例,这时就不能调用子类的override的函数了(比如tellMe)。下面是我的一个
测试程序,请各位指点一下:
// main.cpp
#include "A.h"
#include "B.h"
#include
using namespace std;
int main()
{
vector vec;

for(int i=0; i<10; i++)
{
A* a = new B();
a->tellMe();
vec.push_back(*a);
}
for(int i=0; i<10; i++)
{
((A)vec[i]).tellMe(i*8);
}
return 0;
}
====================
// A.h
#ifnd
w******g
发帖数: 67
43
来自主题: Programming版 - C++ template problem
Yes, it works when I put both the declaration and implementation in the head
file, like:
In DataTemplate.h:
template
ElemType* getVecElemPointer(int index, vector& vec)
{
if( (index0) )
{
return &vec[index];
}
return (ElemType*) 0;
}
The linkage works. Can you explain why? Thanks.
i****d
发帖数: 255
44
来自主题: Programming版 - 自定义数据类型冲突
计算中需要用两个大型程序,都是用标准C写的,各有自己的功能。我想将两个程序连起来使用。
两个程序各自定义有自己的复杂的数据结构,不幸的是有几个结构用的是同一个名字,所以造成
命名冲突。比如两个程序都定义了自己的结构叫 Vec 和 Mat ,编译时会有这样的错误:
previous declaration of ‘Vec’ was here
previous declaration of ‘Mat’ was here
当然可以对其中一个程序中的Vec和Mat重新命名,但那样工作量太大,而且原先在这个程序上
开发的所有程序都要修改。
有没有别的办法?C#应该可以,可惜我的程序是用C写的。
先谢过!
m*******r
发帖数: 98
45
来自主题: Programming版 - c++ 一问
One problem: std::vector vec(vecSize)
this is a definition, not a declaration.
One bad use: const int example::vecSize
as long as you don't take the address of vecSize, there is no need to define
it again outside the class.
//example.h
#include
class example{
public:
example():vec(vecSize){}
static const int vecSize = 20;
private:
std::vector vec;
};
r******9
发帖数: 129
46
来自主题: Programming版 - C++ vector 一边遍历一边删
用iterator遍历一个vector
然后当某个元素符合某种条件时,删掉这个元素
我一直想这么干
vector ::iterator iter = vec.begin();
while(iter != vec.end())
{
if(test(iter->content) == true)
{
vec.erase(iter);
}
++iter;
}
但是这样肯定不行,好像不能再循环体内改变vector
我现在的解决办法就是吧要删的元素的index记下来,然后再对这个index做循环,逐个
删。
高手们有没有好的办法啊?
谢谢啦
x******a
发帖数: 6336
47
来自主题: Programming版 - 请教C++11
接着请教: 下面两个expressions,第一个生成的vec的element都一样,第二个生成的
element是随机的.除了用getNormal(std::mt19937&), 有什么办法使得第一个生成的是
随机的?
1. std::fill_n(std::back_inserter(vec), 10, getNormal());
2. for (auto i = 0; i != 10; ++i) vec.push_back(getNormal());
double getNormal()
{
std::random_device rd;
std::mt19937 gen(rd());
std::normal_distribution<> normal(0, 1);
return normal(gen);
}
x******a
发帖数: 6336
48
来自主题: Programming版 - 请教C++11
moneybull: yes I understand now. thank you.
pptwo: the following does not work. any suggestions are appreciated.
std::vector vec;
vec.resize(10);
std::generate_n(vec, 10, getNormal);
error C4996: 'std::_Generate_n': Function call with parameters that may be
unsafe - this call relies on the caller to check that the passed values are
correct. To disable this warning, use -D_SCL_SECURE_NO_WARNINGS. See
documentation on how to use Visual C++ 'Checked Iterators'
1> c:\program files (... 阅读全帖
s*****n
发帖数: 2174
49
1. R里intersect函数可以给出c, 但是没有index信息. 如果你想得到index, 可以这样
做:
vec1 <- c(1,23,32,44,5,76,69,8)
vec2 <- c(2,4,6,7,8,9,1,3)
vec <- intersect(vec1, vec2)
index1 <- 1:length(vec1)
names(index1) <- vec1
index1[as.character(vec)] # 给出你要的第一个index
index2 <- 1:length(vec2)
names(index2) <- vec2
index2[as.character(vec)] # 给出你要的第二个index.
不过的个人认为, 不给出index是正确的, 因为集合的一个基本特性就是无序性. 你调
用intersect函数本身, 就隐含着把vector变成set这个步骤了. 如果matlab里给出交集
的index, 遇上vector1或者vector2里面有重复元素的情况怎么办?
2. 你问这个问题本身和这样生成数据集, 就说明你的SAS思想很重(pr
s*****n
发帖数: 2174
50
还有另一个办法取index, 就是利用 is.element()
比如
vec1 <- c(1,23,32,44,5,76,69,8)
vec2 <- c(2,4,6,7,8,9,1,3)
vec <- intersect(vec1, vec2)
is.element(vec1,vec)
[1] TRUE FALSE FALSE FALSE FALSE FALSE FALSE TRUE
得到原向量里面的哪些元素出现在intersect里面, 然后利用一个标准指标向量得到
index,
(1:length(vec1))[is.element(vec1,vec)]
这个方法和我之前说的有一点区别, 就在重复元素上. 我之前说的方法返回第一个
match的位置, 这个方法会给出所有match的位置.
首页 上页 1 2 3 4 下页 末页 (共4页)